구조체는 서로 다른 타입의 데이터들을 하나로 묶기 위해 사용하는 파생 자료형이다.
여러 데이터를 묶는다는 점에서 배열과 유사한데
배열의 경우에는 같은 타입의 데이터끼리만 묶을 수 있고,
구조체는 다른 타입끼리도 묶을 수 있다는 점이 가장 큰 구별점이다.
선언 시, 메인 함수보다 위에 선언
구조체 선언 방법1. 구조체명 선언
struct student {
char name[10];
int age;
};
student = 구조체 태그 = 이름
name, age = 구조체 멤버
(구조체 안에 구조체도 선언할 수 있음,,)
이 구조체의 size는 10 + 4 = 14 가 아니라 16임!!
왜? 크기는 항상 4단위로 끊기기 때문에 name의 크기는 4/4/2 10이 아니라 4/4/4 12가 된다.
그래서 12+ 4 = 16 크기가 배정됨
구조체를 선언한 것은 변수 선언한 것이 아님!!
틀만 정의한 상태이고, 변수를 따로 선언해주어야 데이터를 저장할 수 있음
방법 1의 경우, 변수 선언은
struct를 붙인다
struct person p;
선언과 동시에 초기화해줄 수 있음
struct person p = {"nayeon", 10};
구조체 멤버 접근 시, 구조체 이름.멤버명
p.age = 10;
구조체 선언 방법2. 구조체타입 선언 (구조체명 첫글자 대문자로 쓰던가..?)
typedef struct (person) {
char name[10];
int age;
}person;
방법 2의 구조체 변수 선언 방식은
person p;
#포인터를 활용한 구조체를 보기 이전에, 포인터에 대해서 잠깐 알아보고 가기