我正在学习C中的指针.我对下面的程序如何工作感到困惑
int main()
{
int x=30, *y, *z;
y=&x;
z=y;
*y++=*z++;
x++;
printf("x=%d, y=%p, z=%p\n", x, y, z);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
x=31, y=0x7ffd6c3e1e70, z=0x7ffd6c3e1e70
Run Code Online (Sandbox Code Playgroud)
y
并z
指向变量的下一个整数地址x
.我无法理解这条线是如何工作的
*y++=*z++;
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下C如何理解这一行吗?
*y++=*z++;
实际上是指
*y = *z;
y += 1*(sizeof(int)); //because int pointers are incremented by 4bytes each time
z += 1*(sizeof(int)); //because int pointers are incremented by 4bytes each time
Run Code Online (Sandbox Code Playgroud)
所以指向值不受影响,指针加一。