이 의심이들 때 포인터를 다시 방문했습니다.포인터 증가 (ptr ++) 및 (* ptr ++)
int *ptr;
int arr[5] = {10,20,30,40,50};
ptr = &arr[0];
이제 printf("Value: %d",*ptr);
내가 할 경우 10
를 인쇄 할 것이다 :
이ptr++;
printf("Value: %d",*ptr);
이 결과는 다음과 같습니다 20
을 내가 할 마찬가지로 경우 :
*ptr++;
printf("Value: %d",*ptr);
결과는 다음과 같습니다 30
그러나
printf("Value: %d",++*ptr);
내가 ptr
유형 int
이기 때문에 나는 그것을 증가 할 때, 그것은 다음의 메모리 위치에 4 바이트를 뛰어 줄 알았는데 나에게 31
을 제공합니다. 그런데 *ptr++
과 ptr++
에 대해 동일한 동작을 보이며, ++*ptr
에 대한 동작이 아닌 이유는 무엇입니까?
[ptr ++가 * (ptr ++)처럼 작동하고 (* ptr) ++가 아닌 이유는 무엇입니까?] (http://stackoverflow.com/questions/6271028/why-does-ptr-act-like- ptr-and-not-ptr) –