#include <stdio.h>
int main(void) {
 int num=10;
 int * ptr1=&num;
 int * ptr2= ptr1;

 (*ptr1)++;
 (*ptr2)++;
 printf("%d \n", num);
 return 0;
}

 

 

출력결과야 당연히 12겠고..

 

궁금한건

 

int * ptr2= ptr1;이 아니라

int * ptrt2= * ptr1; 로 코딩해보니깐 프로그램 중지한다고 뭐라뭐라 뜨던데..

 

왜 저렇게 코딩하면 오류나는거죠?

 

제 생각은 이렇거든요.

ptr1에 num의 주소 값이 저장되어있고

*ptr1은 num의 주소 값을 가리키고있고 (접근하는것이고)

따라서  포인터 변수 ptr2 에 ptr1의 주소 값을 저장하는게 아니라 *ptr1 가리키고 있는 것 , num 을 저장 하기 위해 저렇게 표현했는데 안되네요..

 

 

 

제가 생각하건데 아마 포인터 변수는 주소 값만 저장할 수 있기 때문에 그런것 같습니다.

 

맞나요?