구조체는 자료를 체계적으로 관리하기 위한 문법이다.
자료 구조의 약어로 struct를 사용한다.
struct Person {
char name[20]; // 이름
int age; // 나이
char address[100]; // 주소
};
위가 좋은 예시이다.
보통 구조체는 멤버 변수가 여러 개 들어 있어서 크기가 큰편이며, 구조체 변수를 일일이 선언해서 사용하는 것 보다는 포인터에 메모리를 할당해서 사용하는 편이 효율적입니다.
예제 코드 참고하기
#define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h> // strcpy 함수가 선언된 헤더 파일
#include <stdlib.h> // malloc, free 함수가 선언된 헤더 파일
struct Person { // 구조체 정의
char name[20]; // 구조체 멤버 1
int age; // 구조체 멤버 2
char address[100]; // 구조체 멤버 3
};
int main()
{
struct Person *p1 = malloc(sizeof(struct Person)); // 구조체 포인터 선언, 메모리 할당
// 화살표 연산자로 구조체 멤버에 접근하여 값 할당
strcpy(p1->name, "홍길동");
p1->age = 30;
strcpy(p1->address, "서울시 용산구 한남동");
// 화살표 연산자로 구조체 멤버에 접근하여 값 출력
printf("이름: %s\\n", p1->name); // 홍길동
printf("나이: %d\\n", p1->age); // 30
printf("주소: %s\\n", p1->address); // 서울시 용산구 한남동
free(p1); // 동적 메모리 해제
return 0;
}