【发布时间】:2014-10-09 15:27:03
【问题描述】:
#include<iostream>
using namespace std;
int main()
{
int a[]={10,20,30,40,50};
int *b,**c,*d;
cout<<a<<endl; ..............(1)
cout<<b; ..............(2)
return 1;
}
如果我运行这个程序只包含 (1) 标记语句输出是
0x22fecc
但是如果我使用两个语句运行程序,即 (1) 和 (2) 那么输出是
0x22fec8 0x401d2e
Q1:为什么在 2 种情况下为 a 打印不同的值
Q2:如果我执行 b = a 然后打印 b 和 a 怎么办?
Q3:为什么 b 和 a 在 Q2 中给出相同的地址?它们现在是否相同,即它们共享相同的位置? b现在是a的别名吗?
Q4:如果我做 b = a+1 然后 cout
Is cout<<a is equivalent to cout<<&a ?
我在 Win7 32bit 上使用代码块 13.12。
【问题讨论】:
-
打印未初始化的
b是未定义的行为。此外,没有理由每次运行程序时地址都应该相同。