【发布时间】:2015-04-21 18:14:25
【问题描述】:
int main()
{
int x;
x = int(&x);
int* q;
q = &x;
int* p;
p = (int*)&x;
int* w;
w = (int*)x;
cout << *p << endl << x << endl << *q << endl << *w << endl << p << endl << q << endl << w << endl << &x;
return 0;
}
输出:
5762632
5762632
5762632
5762632
0057EE48
0057EE48
0057EE48
0057EE48
这一步
x = int(&x)有效吗?这在概念上有什么问题吗?当我们写
p = (int*)&x和w = (int*)x时如何可视化/解释发生了什么?
还请注意,该程序仅在编写步骤 1 时执行。如果x不包含自己的地址,那么程序会报错。
【问题讨论】:
-
不,当
int小于指针时这是无效的。 -
是的。那么第二个问题呢?
标签: c++ variables pointers casting