링크드 리스트 구현시에 초보적인 질문입니다 ㅜㅜ
글쓴이: cbb1225 / 작성시간: 토, 2014/02/08 - 11:38오전
typedef struct
{
int Data;
node* Next;
}node;
typedef node* Nptr
Nptr p = (node *)malloc(sizeof(node));
이 줄에서 32비트 컴퓨터를 기준으로 p는 몇바이트의 저장소가 되는 건가요(정수형변수 4바이트 하나랑, node의 포인터 변수 4바이트로 총 8바이트인가요?)
그리고 malloc(sizeof(node));는 8바이트 크기를 메모리에 할당하고 여기까지는 이해가 가는데 앞에 (node *)가 붙게 되면 형변환이 되는건가요? 이걸 생략해주면 어떻게 되는건가요? 이게 어떤 의미로 쓰인지 잘 모르겠습니다. ㅠㅠ
포인터형 변수 p가 8바이트 생성해준 첫 주소값을 가리키게 되는 것 같은데.. (node *)를 왜쓰고 어떻게 작동하는지 이해가 안갑니다 ㅜㅜ
알려주세요..
Forums:
malloc는 void 형의 메모리를 반환 해서가
malloc는 void 형의 메모리를 반환 해서가 아닐까요 ?
이 경우 (node *)를 생략해도 되기는 되는
이 경우 (node *)를 생략해도 되기는 되는 것으로 알고 있는데요, 확실하게 해 주기 위해서 쓰는 것으로 알고 있습니다
원래 malloc은 void 포인터를 반환하는데, 변수 p는 node *타입이니까 형변환 해준다는 의미죠
Nptr p = (node
Nptr p = (node *)malloc(sizeof(node));는 일반적으로 노드를 생성하는 부분인데요.
구조체 포인터 변수 p가 node형 구조체 포인터에서 생성한 변수이므로
(node *)로 형변환해주는 것입니다
http://kldp.org/node/91491#co
http://kldp.org/node/91491#comment-431717
댓글 달기