1. 중첩 구조체

#include <stdio.h>
struct data2{
int a;
int b;
};

struct data{
struct data2 bbb; // 구조체 안에 구조체
int x;
int y;
};

int main(){
struct data aaa = {1,2,3,4};
printf("%d %d %d %d \n", aaa.bbb.a, aaa.bbb.b, aaa.x, aaa.y);
return 0;
}

// 답 1 2 3 4

- 구조체 안에 구조체가 있다. 선언할 때 1,2는 a와 b에 각각 들어가고 3,4는 x와 y에 들어간다.
- 접근할 때는 aaa 객체를 통해 다시 bbb 객체를 통해 data2 구조체의 변수에 접근한다.

2. 구조체 변수가 포인터일 때
#include <stdio.h>
struct data2{
int a;
int b;
};

struct data{
struct data2 *pt; // 포인터
int x;
int y;
};

int main(){
struct data2 ccc = {1, 2};
struct data aaa = {&ccc,3,4};
printf("%d %d %d %d \n", aaa.pt->a, aaa.pt->b, aaa.x, aaa.y);
return 0;
}

// 답 1 2 3 4
// 구조체 안에 포인터가 있다.
// aaa 객체 안에 data2의 객체 ccc의 주소를 전달하면 aaa 객체 안에 포인터 pt가 받는다.
// 접근할 때는 aaa 객체에서 pt로 data2의 안에 있는 객체에 접근한다.

블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,