|
먼저, 정적할당을 하게 되면 컴파일 시에 해당 객체가 생성되어 실행 파일의 크기가 그만큼 커지게 됩니다.(선악을 떠나서 그렇다는 겁니다)
그리고, 지금의 예에 국한해서 볼 때,
head와 tail을 포인터로 사용하지 않으면
1. 코드에 일관성이 없고
2. 포인터를 사용할 때에 비해 불필요하게 if문을 써야 하는 경우가 발생되고
3. 연결리스트에 자료가 있는지를 알아볼 때도 더 복잡해질뿐만아니라 별도의 구성원을 추가해야 될 경우가 발생합니다.
포인터를 사용한다면 간단하게 if(header!=NULL)로 하면 연결리스트에 자료가 있는지를 바로 알 수가 있음
뚱뚜루 님이 쓰신 글 :
: 예를들어
:
: struct CLASS
: {
: struct CLASS * front;
: struct CLASS * back;
: int t;
: } head,tail;
: 이렇게 써서 연결리스트를 구현할려고합니다.
: 물론 CLASS를 동적할당받아서 중간노드를 구성해야합니다.
: 그런데 헤드와 테일을 위처럼 안하고 걍 동적할당을 받더라구영.
:
: struct CLASS
: {
: struct CLASS * front;
: struct CLASS * back;
: int t;
: } *head, *tail;
: 이렇게 해서 나중에 malloc같은걸로 받더라구영.
: 이것들의 차이점좀 알려주세영.
|