亚信联创笔试题
#include<iostream>
using namespace std;
int main()
{
int b=0;
int a[5]={0,1,2,3,4};
for(int i=0;i<5;)
{
i=a[i+1];
cout<<a[i]<<endl;
}
return 0;
}
输出是什么?
我在VC6.0上运行是死循环,一直输出0 1 2 3 4 0 1 2 3 4...
然后我改了下这个程序变为
#include<iostream>
using namespace std;
int main()
{
int b=0;
int a[5]={0,1,2,3,4};
/*for(int i=0;i<5;)
{
i=a[i+1];
cout<<a[i]<<endl;
}*/
for(int i=0;i<5;i++)
cout<<&a[i]<<" ";
cout<<&a[5];
cout<<endl;
cout<<&b<<endl;
return 0;
}
在我的机子上输出的地址为
0012FF68 0012FF6C 0012FF70 0012FF74 0012FF78 0012FF7C
0012FF7C
Press any key to continue
即A[5]的地址和b的地址是一样的,这是为什么?
请高手赐教
[解决办法]
楼主这个题
公司应该考察的是你对变量在栈的存储结构的认识
栈的结构是往下面地址越高 往上面地址越低
所以楼主的b变量在下面 也就是地址先申请到的
然后接着为数组 a[5]分配空间
其实a[5]的地址就是b的地址
所以为什么会循环就不解释了啊 自己想想 呵呵
[解决办法]
其实楼主你自己去调试一下程序
查看内存 跟踪变量
了解一下内存的管理方式
就会明白的