可能重复:
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