53.1 구조체 배열 선언하기
구조체 배열은 변수 이름 뒤에 [ ] (대괄호)를 붙인 뒤 크기를 설정합니다.
- struct 구조체이름 변수이름[크기];
다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.
struct_array.c
#include <stdio.h> struct Point2D { int x; int y; }; int main() { struct Point2D p[3]; // 크기가 3인 구조체 배열 생성 p[0].x = 10; // 인덱스로 요소에 접근한 뒤 점으로 멤버에 접근 p[0].y = 20; p[1].x = 30; p[1].y = 40; p[2].x = 50; p[2].y = 60; printf("%d %d\n", p[0].x, p[0].y); // 10 20 printf("%d %d\n", p[1].x, p[1].y); // 30 40 printf("%d %d\n", p[2].x, p[2].y); // 50 60 return 0; }
실행 결과
10 20 30 40 50 60
struct Point2D p[3];과 같이 struct 키워드와 구조체 이름으로 구조체 변수를 선언하면서 [ ] (대괄호)안에 크기를 넣어주면 배열로 선언할 수 있습니다.
구조체 배열에서 각 요소에 접근하려면 배열 뒤에 대괄호를 사용하며 대괄호 안에 인덱스를 지정해주면 됩니다. 이 상태에서 다시 멤버에 접근하려면 . (점)을 사용합니다. 즉, p[0].x는 구조체 배열의 첫 번째 요소에서 멤버 x에 접근한다는 뜻입니다.
- 배열[인덱스].멤버
참고 | 구조체 배열을 선언하는 동시에 초기화하기
구조체 배열을 선언하면서 초기화하려면 { } (중괄호)안에 중괄호를 사용합니다.
-
struct 구조체이름 변수이름[크기] = { { .멤버이름1 = 값1, .멤버이름2 = 값2 },
{ .멤버이름1 = 값3, .멤버이름2 = 값4 } }; - struct 구조체이름 변수이름[크기] = { { 값1, 값2 }, { 값3, 값4 } };
다음과 같이 구조체 배열의 각 요소를 중괄호로 묶은 뒤 콤마로 구분해주면 됩니다.
struct_array_init.c
#include <stdio.h> struct Point2D { int x; int y; }; int main() { // 구조체 배열을 선언하면서 초기화 struct Point2D p1[3] = { { .x = 10, .y = 20 }, { .x = 30, .y = 40 }, { .x = 50, .y = 60 } }; printf("%d %d\n", p1[0].x, p1[0].y); // 10 20 printf("%d %d\n", p1[1].x, p1[1].y); // 30 40 printf("%d %d\n", p1[2].x, p1[2].y); // 50 60 // 구조체 배열을 선언하면서 초기화 struct Point2D p2[3] = { { 10, 20 }, { 30, 40 }, { 50, 60 } }; printf("%d %d\n", p2[0].x, p2[0].y); // 10 20 printf("%d %d\n", p2[1].x, p2[1].y); // 30 40 printf("%d %d\n", p2[2].x, p2[2].y); // 50 60 return 0; }
만약 모든 요소의 멤버를 0으로 초기화하고 싶다면 구조체 배열을 선언하면서 { 0, }을 할당하면 됩니다.
struct Point2D p[3] = { 0, }; // 구조체 배열을 선언하면서 0으로 초기화