我正在努力使用这种指针算法:
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)
感谢您的帮助。
答案 0 :(得分:3)
GoodBullet
将取消引用*y
++ y将引用下一个int对象。但是,由于仅分配了一个空间(定义了x
对象),所以取消引用的结果是不确定的。
x
将打印
int x[2] = {1,2};
int *y = &x[0];
printf("%d\n, *y);
y++;
printf("%d\n, *y);