递增指针(ptr ++)和(*ptr ++)

noM*_*MAD 0 c pointers

当我怀疑时,我正在重新审视指针.

int *ptr;
int arr[5] = {10,20,30,40,50};
ptr = &arr[0];
Run Code Online (Sandbox Code Playgroud)

现在printf("Value: %d",*ptr);打印10

如果我做:

ptr++;
printf("Value: %d",*ptr);
Run Code Online (Sandbox Code Playgroud)

结果将是: 20

同样,如果我这样做:

*ptr++;
printf("Value: %d",*ptr);
Run Code Online (Sandbox Code Playgroud)

结果是: 30

printf("Value: %d",++*ptr);
Run Code Online (Sandbox Code Playgroud)

给我 31

我认为ptr,int当我增加它时它是类型,它将跳转到下一个内存位置4个字节.但为什么它显示相同的行为*ptr++,ptr++而不是++*ptr

Oli*_*rth 6

因为优先权.

  • *ptr++*(ptr++)与之相同,指针递增,但其前一个值被解除引用.
  • ptr++和嗯相同ptr++.
  • ++*ptr是相同的++(*ptr),即它增加指向的东西,而不是指针.