int main() {
char c = 'a';
printf("값 : %c ", c);
printf("(크기 : %d바이트)\n", sizeof(c)); // char 값은 1바이트
printf("주소 : %x ", &c);
printf("(크기 : %d바이트)\n", sizeof(&c)); // 주소는 4바이트
char* address = &c;
printf("주소 : %x ", address);
printf("(크기 : %d바이트)\n", sizeof(address)); // char*는 4바이트 (주소는 4바이트)
printf("값 : %c ", *address);
printf("(크기 : %d바이트)\n", sizeof(*address)); // char 값은 1바이트
return 0;
}
값 : a (크기 : 1바이트)
주소 : 1e9ef9bf (크기 : 4바이트)
주소 : 1e9ef9bf (크기 : 4바이트)
값 : a (크기 : 1바이트)
*는 동음이의어 : 선언부에 있으면 '주소 타입', 선언부가 아닌 곳에 있으면 '주소를 통해 값을 얻음'
1) 선언부에서 char*, short*, int*, long* 등은 모두 4바이트 주소 타입
2) 선언부가 아닌 곳에서 *val은 val라는 변수에 들어 있는 주소가 가리키는 곳에 들어있는 값