Programming/C

C언어 - 자기참조 구조체, 외부참조 구조체

경원구 2016. 6. 8. 11:55

<자기참조 구조체>

말 그대로 해석을 하면 자기 자신을 참조하는 구조체이다

간단히 예를 들면

struct abc

{

   int num;

   int age;

   struct abc* p;

};

이런식으로 abc라는 구조체 안에서 다시 자기자신(abc)의 구조체를 참조하는 것이다.

struct abc* p는 자기 참조 구조체라고해서 주소를 저장할 수 있는 포인터 변수이다.

어떤 주소? 자료형이 struct abc인 구조체 변수이다.

 

<실습>

 


 

구조체 struct abc의 멤버변수로 자기자신을 자료형으로 같은 포인터 변수를 선언하였다.

이 의미는 자기 자신을 통해서 같은 자료형(struct abc)을 갖는 구조체 변수에게 접근할 수 있다는 것이다.

위의 코드를 보면 구조체 abc의 구조체 변수는 현재 3개 선언되어있다. A, B, C

세개의 구조체 변수를 통해 원래는 자신의 구조체 변수를 통해서 접근을 시도해야 하는데 마지막 줄에 구조체 변수 C의 멤버 변수에 접근할 때는 정작 자기 자신을 활용되지 않고 구조체 변수 B를 통해서 접근하였다.

그림을 그려보면 다음과 같다.

 

 

-결과-

 

<외부참조 구조체>

외부참조 구조체는 말 그대로 자신의 구조체에서 다른 구조체 변수의 주소를 저장할 수 있는 포인터 변수를 선언해 자기자신을 통해 다른 구조체로 접근할 수 있는 구조체를 의미한다.

 

<실습>

 

-결과-