我正在学习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;
}
输出
x=31, y=0x7ffd6c3e1e70, z=0x7ffd6c3e1e70
y
和z
指向变量x
的下一个整数地址。
我无法理解这条线是如何工作的
*y++=*z++;
有人可以解释一下C如何理解这一行吗?
答案 0 :(得分:4)
*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
如此指向的值不受影响,指针会增加一个。