指针递增查询

Cra*_*aig 0 c++ math pointers visual-studio-2005 visual-studio-2008

我一直在看这段代码,并没有按照我的预期行事.

我有3个全局变量.

int x, y, *pointer, z;
Run Code Online (Sandbox Code Playgroud)

在主要内部我宣布他们.

x = 10;

y = 25;

pointer = &x;
Run Code Online (Sandbox Code Playgroud)

现在就在这一点上

&x is 0x004A144  
&y is 0x004A138  
Run Code Online (Sandbox Code Playgroud)

指针指向0x004A144

现在当我增加:

y = *++pointer;
Run Code Online (Sandbox Code Playgroud)

它指向0x004A148,这是应该在的地址y应该不是吗?

想法是将指针递增到'x'应该将其递增到指向
y,但它似乎不想像我期望的那样按顺序声明它们.
如果这是VS2005/2008的问题?或者也许是Express问题?
这不是真正的功课,正如我几年前所做的那样,但是我正在修改我的指针,我再试一次.但这次我得到了意想不到的结果.有没有人对此有意见?

*UPDATE
抱歉应该更清楚,声明'y'上的'思考'应该是148,并且指针指向x的指针应该将'指针'增加到148(它确实如此),但这不是y所在的位置.为什么不宣布它应该在哪里.

AnT*_*AnT 7

整个想法确实存在问题.你不能有意义地使用指针通过递增和递减从一个变量"跳转"到另一个变量.这是一个奇怪的,丑陋的,毫无意义的黑客,语言无法保证这一点.

C/C++中的指针算法仅在数组中定义.所以,如果你想要的东西,而不是这样的,xy申报的2个整数数组

int xy[2] = { 10, 25 };
Run Code Online (Sandbox Code Playgroud)

初始化指针

int *pointer = &xy[0];
Run Code Online (Sandbox Code Playgroud)

然后你就可以之间跳转xy[0],并xy[1]为你想尽可能多的递增和递减的pointer.