[C언어 자료구조]자체 참조 구조체
2019. 4. 14. 01:19ㆍ개인공부/C언어 자료구조
1. 자체 참조 구조체
구조체를 정의할 때 멤버 중에 자기 자신을 가리키는 포인터가 존재하는 구조체를 말한다.
뭔 말이냐
struct ListNode {
char data[10];
struct ListNode* link;
};
이런 거다 ListNode라는 구조체를 선언하면서 멤버 변수로 ListNode의 포인터변수가 들어가 있다.
그 예전에 배운 재귀호출 느낌나기도 하고 컴파일이 안될 거 같은데 컴파일은 된다.
연결 리스트나 트리, 그래프 등의 자료구조에 쓰일 예정이라고 책에 쓰여 있다.
흠 ..
2. 포인터 사용시 주의점
(1) 포인터가 어떤 값을 가리키고 있지 않을 때는 NULL로 설정하는 것이 좋다.
int* pi=NULL;
포인터가 선언되고 NULL이 아니라면 어떤 주소를 가리키고 있을 텐데 그 주소에 값이 들어가는 경우가 생겨서 그런 건가?
(2) 초기화가 안 된 포인터 변수가 가리키는 곳에 자료를 저장하면 안 된다.
char* pc;
*pc = 'E';
선언만되고 초기화가 안되었다. 거기다 'E'라는 값을 넣어주니 런타임에러가 뜬다.
아마 선언과 동시에 랜덤한 주소가 들어가고 그 주소에 값이 저장되니 에러가 뜬 것 같다.
(3) 자료형이 다른 포인터 사이의 변환에는 명시적인 형 변환을 사용한다.
int* pi;
float* pf;
pf = (float*)pi;
음.. 뭔 말인지는 알겠는데 쓸 일이 있을지는 현재는 잘 모르겠다. 애초에 선언할 때 float형으로 했으면 된 거 아닌가싶고..
'개인공부 > C언어 자료구조' 카테고리의 다른 글
연결리스트로 스택 구현 (2) | 2019.04.14 |
---|---|
C언어 연결 리스트 (0) | 2019.04.14 |
[C언어 자료구조] 헷갈리는 포인터연산 (0) | 2019.04.14 |
C언어 동적 메모리 할당[Dynamic memory allocation] (0) | 2019.04.11 |
이중포인터 설명 (0) | 2019.04.09 |