当我怀疑时,我正在重新审视指针.
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?
因为优先权.
*ptr++*(ptr++)与之相同,指针递增,但其前一个值被解除引用.ptr++和嗯相同ptr++.++*ptr是相同的++(*ptr),即它增加指向的东西,而不是指针.