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의 안에 있는 객체에 접근한다.
'C' 카테고리의 다른 글
[C] 구조체 동적할당 하기 (0) | 2019.12.04 |
---|---|
[C] 2차원 배열의 표현 (0) | 2019.12.04 |
[C] 변수형 문자열 상수형 문자열 (0) | 2019.12.03 |
[C] 조건부 컴파일 #if #else #elif #endif #ifdef #ifndef (0) | 2019.12.03 |
[C] 파일 위치지시자 fseek (0) | 2019.12.03 |