可能重複:
Pointer Arithmetic: ++*ptr or *ptr++?你能解釋* ptr ++和*(++ ptr)之間的區別嗎?
我不明白有什麼區別?這裏是一個實現的代碼的例子*的ptr ++
#include <stdio.h>
int my_array[] = {1,23,17,4,-5,100};
int *ptr;
int main(void)
{
int i;
ptr = &my_array[0]; /* point our pointer to the first
element of the array */
printf("\n\n");
for (i = 0; i < 6; i++)
{
printf("my_array[%d] = %d ",i,my_array[i]);
printf("ptr + %d = %d\n",i, *ptr++);
}
return 0;
}
輸出是
my_array[0] = 1 ptr + 0 = 1
my_array[1] = 23 ptr + 1 = 23
my_array[2] = 17 ptr + 2 = 17
my_array[3] = 4 ptr + 3 = 4
my_array[4] = -5 ptr + 4 = -5
my_array[5] = 100 ptr + 5 = 100
當改變第二printf語句給printf( 「PTR +%d =%d \ n」 個,我,*(++ ptr)); 這成爲輸出繼電器:
my_array[0] = 1 ptr + 0 = 23
my_array[1] = 23 ptr + 1 = 17
my_array[2] = 17 ptr + 2 = 4
my_array[3] = 4 ptr + 3 = -5
my_array[4] = -5 ptr + 4 = 100
my_array[5] = 100 ptr + 5 = -1881141248
有人請詳細解釋的差異,所以我能理解。
'* ++ ptr'增量,然後返回* current * eval,'* ptr ++'增量,然後返回* prior * eval。這是涵蓋了一些[問題](http://stackoverflow.com/questions/5209602/pointer-arithmetic-ptr-or-ptr)和[答案](http://stackoverflow.com/questions/13338730/ vs-precedence-in-c/13338801#13338801),僅舉幾例。 – WhozCraig