본문 바로가기
프로그래밍 언어/C언어

[C언어 #7] 구조체 (struct, typedef)

by 디버그러 2024. 12. 6.

배열은 크기가 같은 동일한 데이터 타입만 묶을 수 있습니다.

하지만 구조체를 사용하면 크기나 형식이 다른 데이터도 하나로 묶어서 관리할 수 있습니다.

 

 

 


 

 

1. 구조체 개념
struct 구조체 이름
{
자료형1 변수_이름1;
자료형2 변수_이름2;
...
}

위 구조체는 몬스터 데이터를 저장하기 위해 서로 다른 데이터 타입(문자 배열, 정수)을 하나로 묶은 예제입니다.

Monster는 새로 정의된 데이터 타입으로 int, char 등과 동일한 역할을 합니다.

 

 

 

2. 구조체 변수

 

구조체를 사용하려면 변수를 선언한 후, 각 요소에 접근하여 데이터를 저장하거나 읽어옵니다.

 

구조체 변수의 요소에 접근하려면 요소 지정 연산자(.)가 필요합니다.

예를 들어 monster.name은 monster 변수의 name 요소에 접근합니다.

 

 

 

3. typedef 문법

 

C 언어에서는 구조체를 사용할 때 struct 키워드를 항상 명시해야 합니다.

하지만 typedef 키워드를 사용하면 구조체를 선언할 때 struct를 생략할 수 있습니다.

 

위 코드에서 typedef는 struct Monsters를 간단히 Monster라는 이름으로 사용할 수 있도록 합니다.

C++에서는 struct 키워드 없이도 Monster monster; 처럼 사용할 수 있지만, C에서는 typedef를 사용해야 이와 같은 편리함을 얻을 수 있습니다.

 

 

 

4. 구조체 배열

 

구조체는 배열로 선언하여 여러 개의 데이터를 한 번에 관리할 수 있습니다.

위 코드에서는 monster 배열을 통해 데이터를 한 번에 초기화하고 있습니다.

 

 

 

5. 구조체 포인터

 

구조체 변수의 주소를 가리키는 구조체 포인터를 사용할 수도 있습니다.

구조체 포인터를 통해 구조체 요소에 접근할 때는 ->(포인터 요소 접근 연산자)를 사용합니다.

 

 

구조체 포인터에 malloc 함수를 통해 동적 메모리를 할당하고 요소를 초기화할 수 있습니다.