【发布时间】:2011-01-25 11:08:29
【问题描述】:
我编写了以下代码,试图解决一个请求类似数组的结构而不使用它们的挑战:
#include <iostream>
int main(){
int x = 132,y = 33,z = 87;
int *i = &x;
std::cout << x << " " << y << " " << z << "\n";
std::cout << &x << " " << &y << " " << &z << "\n";
std::cout << i << " " << i-1 << " " << i-2 << "\n";
std::cout << *i << " " << *(i-1) << " " << *(i-2) << "\n";
}
我发现 2 个变量的地址 (&y-&x) 之间的差异为 -1,我随后修改了代码 我不明白为什么最后一个定义的变量是在“之前”分配的(意思是以前的地址)。
老实说,我会认为 &y-&x = 1。
你能给我一些建议吗? (没有双关语:P) 哦,我知道代码是不好的做法 - 但它有缺点或例外吗?
提前谢谢你
【问题讨论】:
-
您无法对这些局部变量的分配方式、位置或顺序做出任何有效的假设。
-
我无法假设 &y-&x 等于 &z-&y?
-
正如我上面所说,你不能对此做出任何有效的假设...