여러개의 값을 담을때는
여러개의 int a , int b , int c가 아닌
배열을 통해 같은 자료형의 배열을 만들어 값을 여러개 담을수있습니다.
그러나 하나의 자료형이아닌
학생에대한 정보를 담은 배열을 만들려고하면
학생의 이름(문자열)
학생의 나이(정수)
학생의 학년(정수)
학생의 성적(문자)
등 한명의 학생에 대한 정보를 저장하기위해 4가지의 다른 type들이 필요한데
이럴때 배열이아닌 구조체를 이용합니다.
< 구조체 형식 >
struct 구조체이름 { 자료형 멤버이름; };
먼저 struct 키워드 뒤에 구조체 이름을 지정해주고 { } (중괄호) 안에 변수를 선언합니다. 이렇게 구조체 안에 들어있는 변수를 멤버라고 합니다. 그리고 구조체를 정의할 때 } (닫는 중괄호) 뒤에는 반드시 ; (세미콜론)을 붙여줍니다.
구조체(Structure)
구조체라는 것은 하나이상의 변수(포인터 변수와 배열 포함)를 묶어서 새로운 자료형을 정의하는 도구이다. 즉 구조체를 기반으로 우리는 새로운 자료형을 정의 할 수 있다.
자바를 먼저 배웠다면 이 구조체는 자바의 객체 사용방법과 흡사하다.
구조체를 정의 하는 방법은 아래와 같다.
ex)
struct person { // person이라는 이름의 구조체 정의
int num; // 정수 저장용 멤버
char str[30]; // 문자열 저장용 멤버
};
위에서 person이라는 이름의 자료형이 만들어졌다. 그렇다면 이제 이 자료형의 변수를 만들어 주어야한다.
ex)
struct person simson;
위의 예시를 보면 알겠지만 맨앞에 struct선언을 추가해야하며, 이어서 구조체의 이름과 구조체 변수의 이름을 선언 해야한다.
여기서 구조체 변수의 이름은 simson이다.
구조체 변수는 당연히 아래처럼 배열로도 선언이 가능하다.
ex)
struct person simson[2];
구조체 변수의 멤버에는 int형의 변수num과 char형의 배열 str이 존재하는데 이 둘을 사용 할 때에도 일반적인 방법과는 조금 다른다.
ex)
simson.num
simson.str
이처럼 구조체 변수를 앞에 입력후 점(.)을 찍고 멤버 변수의 이름을 적어사용한다.
아래의 간단한 코드를 작성하여 보자
#include<stdio.h>
#pragma warning(disable:4996) // scanf 보안 경고 제거용
struct person {
int num;
char str[30];
};
int main(void) {
int i;
struct person simson[2];
for (i = 0; i < sizeof(simson)/sizeof(simson[1]); i++) {
printf("이름 입력: ");
scanf("%s",simson[i].str);
simson[i].num = i;
}
for (i = 0; i < sizeof(simson) / sizeof(simson[1]); i++){
printf("========\n%d 번째 이름: ", simson[i].num+1);
printf("%s \n", simson[i].str);
}
return 0;
}
여기서 sizeof(simson)/sizeof(simson[i])는 배열의 크기를 구할때 쓰인다.
'JAVA' 카테고리의 다른 글
java 코딩 | 자바 | 자바 학습을 시작하는 방법 (0) | 2020.05.29 |
---|---|
c프로그래밍 삽입정렬(Insertion Sort) c코드 설명 (0) | 2020.04.01 |
블로체인 대칭키 암호방식(비밀키 암호방식) 개념과 특징 DES암호 RSA암호 (0) | 2020.03.31 |