핵심 정리
typedef로 자료형의 별칭 정의하기
typedef를 사용하면 구조체를 포함하여 모든 자료형의 별칭을 정의할 수 있습니다.
typedef 자료형 별칭; // 자료형의 별칭 정의 typedef 자료형* 별칭; // 자료형 포인터의 별칭 정의
구조체
구조체는 struct 키워드로 정의하며 관련 정보를 하나의 의미로 묶을 때 사용합니다.
// 구조체 정의하기 struct 구조체이름 { 자료형 멤버이름; }; // 구조체 변수 선언하기 struct 구조체이름 변수이름; // 구조체 변수를 선언하는 동시에 값을 초기화 struct 구조체이름 변수이름 = { .멤버이름1 = 값1, .멤버이름2 = 값2 }; struct 구조체이름 변수이름 = { 값1, 값2 }; // 구조체를 정의하는 동시에 변수 선언하기 struct 구조체이름 { 자료형 멤버이름; } 변수; // 구조체를 정의하면서 구조체 별칭 정의하기 typedef struct 구조체이름 { 자료형 멤버이름; } 구조체별칭; // 익명 구조체 정의하기 typedef struct { 자료형 멤버이름; } 구조체별칭; // 구조체 별칭으로 변수 선언하기 구조체별칭 변수이름;
구조체 멤버에 접근할 때는 . (점)을 사용합니다.
struct 구조체이름 변수이름; 변수.멤버; // 구조체 멤버의 값을 가져옴 변수.멤버 = 값; // 구조체 멤버에 값을 저장
malloc 함수로 구조체 포인터에 메모리를 할당할 수 있으며 이때는 멤버에 접근할 때 -> (화살표 연산자)를 사용합니다.
// 구조체 포인터에 동적 메모리 할당 struct 구조체이름 *포인터이름 = malloc(sizeof(struct 구조체이름)); // 구조체 별칭으로 포인터를 선언하고 동적 메모리 할당 구조체별칭 *포인터이름 = malloc(sizeof(구조체별칭)); 포인터->멤버; // 구조체 포인터 멤버의 값을 가져옴 포인터->멤버 = 값; // 구조체 포인터 멤버에 값을 저장 free(포인터); // 구조체 메모리 해제
구조체 포인터에는 & (주소 연산자)로 구조체 변수의 메모리 주소를 구해서 할당할 수 있습니다.
구조체포인터 = &구조체변수;