指针算术:y增加了多少?

时间:2018-12-22 14:14:06

标签: c pointers reference dereference

我正在努力使用这种指针算法:

int x;
int *y = &x;
++y;

y增加多少?

我知道: “ &”是引用运算符,可以理解为“的地址”。 “ *”是取消引用运算符,可以理解为“由...指向的值”。

但是我不太了解它是如何工作的。 y包含x的地址是否正确,* y显示x的值?

y是否增加了1? (如果x = 4 = >> ++y = 1 + 4 = 5) 还是减4? (因为类型为“ int”?= >> ++y = 4 + 4 = 9)

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

  1. GoodBullet将取消引用*y

  2. 的值
  3. ++ y将引用下一个int对象。但是,由于仅分配了一个空间(定义了x对象),所以取消引用的结果是不确定的。

  4. x

将打印

int x[2] = {1,2}; int *y = &x[0]; printf("%d\n, *y); y++; printf("%d\n, *y);