int *p;선언하자마자p에 아무것도 안넣고 sizeof(*p) 를 출력하면4가 나오드라구*p는 p가 가리키는 값인데가리키는 값이 없는데 사이즈가 4가 나오는거 보니까int *p; 하면주소넣을자리, 값넣을자리둘다 만들어지는거야?
sizeof는 함수가 아니라 연산자다. 컴파일러는 p의 타입이 int*인걸 아니까 *p의 타입이 int인것도 알고 그래서 결국은 sizeof(int)랑 같아지는겨
아니 int*라는 값을 넣을 자리를 만드는거다
int형 포인트니까 4바이트가나오죵 선언을함과동시에 잡히는거 [Bald Eagle]
아하... 함수가아니고 연산자라 sizeof(int)로 쓸수있는거군아...
char* cp; 정의하면 sizeof(cp)==4, sizeof(*cp)==1 인게 cp는 char*형(주소가저장될곳==정수)이니까 4바이트고, *cp는 char이니까 1바이트인거지? 알거같어
아 그러면 cp랑 *cp랑 메모리에 따로 적재되는건가??
char* cp;라고 선언했을때 cp는 쓰레기를 가리키고 있다. cp는 4바이트고(32비트cpu에서), *cp는 1바이트 짜리 쓰레기겠지.