본문 바로가기

C언어/C언어 문법

[C언어] 구조체의 중첩

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
반응형