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所在的位置.为什么不宣布它应该在哪里.
整个想法确实存在问题.你不能有意义地使用指针通过递增和递减从一个变量"跳转"到另一个变量.这是一个奇怪的,丑陋的,毫无意义的黑客,语言无法保证这一点.
C/C++中的指针算法仅在数组中定义.所以,如果你想要的东西,而不是这样的,x和y申报的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.