study/자료구조
[Chap5] 포인터와 연결리스트
by 메이02
2023. 4. 5.
[포인터에 대해 정리]
- 모든 포인터 변수의 크기는 동일하다
- *는 어디에 붙여도 상관없다. (char* p 던지, char *p 던지) -> 그렇지만 첫번째가 좋다 !
- 포인터 중 void포인터는 아무것도 가리키지 않는 포인터를 의미. -> 필요할 때 마다 다른 포인터로 바꾸어서 사용
- 포인터는 사용전에 반드시 초기화 할것
- void* p;
- pi = (int*)p; -> p를 정수포인터로 변경해서 pi로 대입하는 것
- 배열과 포인터
- 배열 이름 = 배열의 시작부분 가리키는 포인터로 사용
- 객체와 포인터
- 전제) (클래스의 객체 s와 포인터변수 ps일 때, ) 's.i' == 'ps -> i' == '(*ps).i'
- 자체 참조 클래스 : 멤버 변수들 중에 동일한 클래스의 객체를 가리키는 포인터가 한 개 이상 존재하는 클래스
- 동적으로 객체를 생성하여 포인터로 연결하는 구조
struct ListNode{
char datd[10];
ListNode* link;
}
[동적메모리와 정적메모리]
- 정적 메모리 = 우리가 그동안 계속 그냥 사용했던 방식 !
- 동적 메모리 = 포인터를 이용하는 것
[연결리스트]
- 노드 = 상자 -> 노드안에는 데이터 필드와 링크 필드가 존재
- '데이터 - 링크' 구조로 이루어짐.
- 링크는 다음 노드의 데이터를 포인터로 가리킨다