728x90
반응형
구조체의 중첩
구조체도 반복문이나 조건문처럼 중첩하여 사용하는 것이 가능하다.
이미 정의된 구조체의 자료형을 새로운 구조체를 선언할 때 사용하는 것이다.
따라서 아래 코드처럼 중첩하여 선언하는 것이 가능하다.
typedef struct {
float x;
float y;
}Pos;
typedef struct {
float radius;
Pos cen;
} Circle;
중첩된 구조체에는 도트연산자를 중첩하여 사용하는 것으로 접근이 가능하다.
따라서 위에서 선언된 x와 y에 접근하고 싶다면 아래 코드처럼 사용하면 된다.
Circle CircleA;
CircleA.cen.x = 5.5;
초기화를 할 때에도 중괄호를 중첩하여 선언해 주면 된다.
Circle CircleA = {5.5, {3.5, 4.5}};
가장 먼저 선언된 멤버는 radius 이므로 CircleA.radius에 5.5가 들어가고 다음으로 cen에 {3.5, 4.5}가 들어가게 된다.
#include <stdio.h>
typedef struct {
float x;
float y;
}Pos;
typedef struct {
float radius;
Pos cen;
} Circle;
void PrintCircle(Circle A)
{
printf("원의 x좌표 : %f\n", A.cen.x);
printf("원의 y좌표 : %f\n", A.cen.y);
printf("원의 반지름 : %f", A.radius);
}
int main()
{
Circle CircleA = {5.5, {3.5, 4.5}};
Circle CircleB = {4.5, 4.5, 4.5};
PrintCircle(CircleA);
printf("\n\n");
PrintCircle(CircleB);
return 0;
}
따라서 위 코드의 출력값은 아래와 같다.
728x90
반응형
'C언어 > C언어 문법' 카테고리의 다른 글
[C언어] 조건부 컴파일 매크로 (#if, #elif, #endif, #ifdef, #ifndef) (0) | 2024.02.25 |
---|---|
[C언어] 매크로 (define, 오브젝트 유사 매크로, 매크로 함수) (0) | 2024.02.25 |
[C언어] 함수로의 구조체 변수 전달과 구조체 반환 함수 (0) | 2024.02.24 |
[C언어] 사용자 정의 자료형(typedef), 구조체 typedef 선언 (0) | 2024.02.23 |
[C언어] 구조체(struct), 구조체 배열, 구조체 포인터, 화살표 연산자, 구조체 변수의 주소값 (0) | 2024.02.23 |