• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

5:18 질문있습니다

20.08.31 21:29 작성 조회수 214

0

1 #include <stdio.h></stdio.h>

  2 

  3 int main()

  4 {

  5 

  6     char* ptr = 0;

  7 

  8     printf("%zd %zd %zd\n", sizeof(char*), sizeof(double*) , sizeof(long long*));

  9 

 10     printf("%p %lld\n",ptr ,(long long)ptr);

 11 

 12     ptr += 1;

 13 

 14     printf("%p %lld\n",ptr ,(long long)ptr);

 15 

 16 

 17 

 18 }

이때 포인터 변수의 크기는 주소의 크기이므로 4바이트(x86)로 고정되어서 항상 4씩 증가하는 것 아닌가요? 제가 잘못 이해하고 있는 부분이 어딘지 몰라서 이렇게 질문드립니다.

(8번째 줄 코드는 제가 추가한 것입니다)

답변 4

·

답변을 작성해보세요.

2

상욱님의 프로필

상욱

2020.09.01

포인터의 크기는 고정인데

char* ptr=0; 과 double* ptr=0 이 값이 다르게 나오고

void* ptr=0;이 오류가 나오는 이유를 생각해 보세요

1

Hello Yeo님의 프로필

Hello Yeo

2020.09.01

강의에서 서로 다른 자료형에 대해서 이런 저런 시도를 하는데... 이 부분을 눈여겨 보셨으면 좋겠습니다.

1

khan님의 프로필

khan

질문자

2020.09.01

포인터의 크기는 고정이 아닌가요?

0

Hello Yeo님의 프로필

Hello Yeo

2020.08.31

안녕하세요?
생각하신 것과는 좀 다릅니다. 자료형의 크기와 연관지어서 생각해보시면 좋겠습니다.