Information*/알면도움됨

구조체 와 관련된 무언가

ch4rli3kop 2020. 4. 28. 04:24
반응형

구조체 와 관련된 무언가

1. 왜 안됨?

typedef struct _list {
   char data;
   int a;
   struct _list link;
} list;

위와 같이 선언한다면, 구조체의 크기가 무한대로 표현될 거시다.

자기참조 구조체는 다음과 같이 포인터를 이용해서 구현할 수 있다.

typedef struct _list {
   char data;
   int a;
   struct _list *link;
} list;

2. typedef 구조체는 태그가 없어도 사용가능함

typedef struct {
   char data;
   int a;
   struct _list link;
} list;

3. 왜 안됨?

typedef struct {
   char data;
   int a;
   list* link;
} list;

list 별칭이 아직 선언되기 이전이라 인식할 수가 없어서 그럼

4. 왜 됨?

typedef struct {
   char data;
   int a;
   struct list* link;
} list;

이거때문에 계속 띠용했는데, 어차피 포인터를 포함하는 필드이기 때문이라 그런거 같음.

실제로 다음과 같이 선언하지도 않은 구조체 BBBBBBB에 대한 포인터 형을 변수로 넣어도 정상적으로 컴파일됨.

typedef struct {
   char data;
   int a;
   struct BBBBBBB* link;
} list;

뇌피셜인데, 컴파일러에서 실제 존재하는 구조체인지 확인은 하지 않고 그냥 포인터 형인지만 판단해서 공간을 할당해주는 거 같음.



반응형

'Information* > 알면도움됨' 카테고리의 다른 글

[Visual Studio 2017] CL Casting Error  (0) 2020.05.10
vmware bridge  (0) 2020.05.06
c# 프로세스 소켓 오류  (0) 2020.03.06
Frida unable to access Zygote64 error  (0) 2020.03.06
fatal error: 'openssl/sha.h' file not found  (0) 2020.01.18