【发布时间】:2013-09-12 16:06:02
【问题描述】:
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
int main()
{
int a[]={0,1,2,3};
int *r[]={NULL};
for(int i=0;i<4;i++)
{
r[i]=&a[i];
cout << &a[i] << endl;
cout << a[i]<<endl;
}
for(int i=0;i<4;i++)
{
cout << r[i] << endl;
cout << *r[i] << endl;
}
return 0;
}
我最近开始研究指针数组。有人可以帮我找出上述程序中的错误吗..
我附上了在windows和linux平台上运行时的结果截图。
在 Windows 上,*r[] 和 a[] 的地址匹配,但值仍然不匹配。
在 linux 上,有时会显示“BUS ERROR”,有时会显示“Segmentation fault”。
如果有人解释“BUS ERROR”是什么意思会更好?为什么它会出现在这个程序中。
【问题讨论】:
-
2 个单词 - 内存损坏。
-
写
NULL而不是0的人(当他们真正想要整数零而不是空指针时)是可怕的人。问 Stephan T. Lavavej,他会告诉你战争故事。 -
当我想要一个指针 0 时我写 0,我只是没有看到指针有一个特殊值的意义。