C언어 포인터의 크기

1 개념[ | ]

Size Of Pointer
포인터의 크기
  • 32비트 시스템의 포인터 크기: 4바이트
  • 64비트 시스템의 포인터 크기: 8바이트
  • 포인터가 가리키는 대상인 자료형의 크기와는 다르다...

2 포인터 크기 원리[ | ]

포인터는 메모리 위치를 가리키기 위한 주소를 담는 변수다. 만약 32비트 시스템이라면 CPU의 메모리 접근을 위한 주소가 32비트 만큼 가능하기 때문에 포인터도 32비트(4바이트)가 된다. 반면, 64비트 시스템이라면 64비트(8바이트) 만큼 가능하기 때문에 포인터도 64비트(8바이트)가 된다.

3 예시(64비트 시스템)[ | ]

C
CPU
0.1s
MEM
17M
0.1s
Copy
#include <stdio.h>
void main()
{
    int *pi;
    char *pc;
    long *pl;
    float *pf;
    double *pd;
    printf("%d ", sizeof(pc));
    printf("%d ", sizeof(pi));
    printf("%d ", sizeof(pl));
    printf("%d ", sizeof(pf));
    printf("%d ", sizeof(pd));
    // 8 8 8 8 8 
}
8 8 8 8 8 
→ 64비트 시스템에서 int, char, long,float, double 자료형 포인터의 크기는 8바이트(=64비트)임

4 같이 보기[ | ]

편집자 John Jeong J Jmnote Jmnote bot
  • C, C++ 주석
    C에도 적용되는 주석 문법이라면, "C와 C++ 주석"으로 제목을 옮기면 어떨까요? Ykhwong
  • C, C++ 주석
    @Ykhwong 네네. 좋은 의견 입니다. 변경 부탁드려요. John Jeong
  • C, C++ 주석
    'C스타일 주석'이라는 제목도 괜찮겠네요.J Jmnote
  • C, C++ 주석
    'C, C++ 주석' 형태로 최종 가도록 하겠습니다. C와 C++ 까지의 현재 범위를 명확히 하려 합니다. John Jeong
  • C언어 연결리스트 구현
    마지막에 메모리 해지는 어떤식으로 해야되나요?? 돌멩이
  • C언어 연결리스트 구현
    @돌맹이 head 가 널까지 가는거 보시고 코드가 아름 답진 않지만 대략 아래 방법처럼 하나씩 삭제 하시면 될 것 같습니다. void deleteNode(nodeType *head) { nodeType *ptr = head, *ptr2 = NULL; while(ptr- John Jeong
  • C언어 연결리스트 구현
    답변 감사합니다! 돌멩이