본문 바로가기
C언어

C언어 - 포인터 쉽고 간결하게 이해하는 코드

by Jason95 2021. 2. 23.
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라는 변수에 들어 있는 주소가 가리키는 곳에 들어있는 값