C언어/Study

[C언어 공부] 주소와 포인터의 크기

이렁부너 2024. 8. 21. 00:30

주소와 포인터의 크기

  • 포인터도 저장 공간이므로 크기가 있음. 포인터의 크기는 저장할 주소의 크기에 따라 결정되는데 크기가 클 수록 더 넓은 범위의 메모리를 사용할 수 있음.
  • 모든 주소와 포인터는 가리키는 자료형과 상관없이 그 크기가 같음. (안에있는 변수는 자료형에 따라 크기가 다를 수 있음.)
/*
* 주소와 포인터의 크기
*/

#include <stdio.h>

int main(void)
{
    char ch;
    int in;
    double db;

    char *pc = &ch;
    int *pi = &in;
    double *pd = &db;

    printf("char형 변수의 주소 크기 : %d\n", sizeof(&ch));
    printf("int형 변수의 주소 크기 : %d\n", sizeof(&in));
    printf("double형 변수의 주소 크기 : %d\n", sizeof(&db));

    printf("char * 포인터의 크기 : %d\n", sizeof(pc));
    printf("int * 포인터의 크기 : %d\n", sizeof(pi));
    printf("double * 포인터의 크기 : %d\n", sizeof(pd));

    printf("char * 포인터가 가리키는 변수의 크기 : %d\n", sizeof(*pc));
    printf("int * 포인터가 가리키는 변수의 크기 : %d\n", sizeof(*pi));
    printf("double * 포인터가 가리키는 변수의 크기 : %d\n", sizeof(*pd));

    return 0;
}

 

 

 

 

 

 

 

 

 

 

 

  • 17~19행과 21~23행은 자료형과 상관없이 모두 크기가 같음. but 25~27행과 같이 포인터에 간접 참조 연산자를 사용해 가리키는 변수의 크기를 구하면 각각 다른 결과가 나옴.