74.1 포인터 관련 질문
, 최 원일님이 작성struct NODE { struct NODE *next; int data; }; int main() { struct NODE *head = malloc(sizeof(struct NODE)); struct NODE *node1 = malloc(sizeof(struct NODE)); head->next = node1;
head->next = node1; 포인터 변수에 주소값을 넣는데 포인터의 &node1이 아닌가요?
next는 pointer to struct Data 이고, node1도 pointer to struct Data 서로 같은 자료형이라 head->next = node1 이 가능한건가요?
포인터 변수는 주소값을 가리키는 곳이라고 알고있습니다. 그럼 struct NODE *node1 에서 node1은 주소값인건가요? 배열 arr[10]에서 arr이 주소값인거처럼 node1도 주소값인건가요? 이중포인터시에는 &node1일텐데 제가 잘 이해를 못한거 같습니다. 공부를 하고 있는데도 헷갈립니다... 가르쳐 주시면 정말 감사하겠습니다!!
Re: 74.1 포인터 관련 질문
, 도장_ 관리자님이 작성next는 pointer to struct Data 이고, node1도 pointer to struct Data 서로 같은 자료형이라 head->next = node1 이 가능한건가요?
네, 정확하게 이해하고 있습니다. 맞습니다.
만일 한쪽이 pointer to sturct Data이고, 다른 한쪽이 struct Data이면 타입 불일치(mismatch)로 오류가 발생합니다.
node1은 주솟값입니다.
배열이나 포인터 모두 주솟값입니다.
다만, 포인터는 가리키는 타입에 따라 포인터 타입이 정해집니다.
&node1은 address of pointer to struct Data이므로 **node2처럼 선언된 변수가 없다면 사용할 수 없습니다.
struct Data **node2 = &node1;
여기서 굳이 이렇게 써야 할 이유는 없습니다.