我在两个文件中有以下程序
main.cpp
float POW10[300];
main(0
{
Fill_POW10();
}
Fill.cpp
extern float *POW10;
Fill_POW10()
{
for(int i=0;i<300;i++)
{
POW10[i]=i;
}
}
这因分段错误而崩溃。当我检查时,POW10为NULL。但是,如果我将Fill.cpp更改为
extern float POW10[];
Fill_POW10()
{
for(int i=0;i<300;i++)
{
POW10[i]=i;
}
}
该代码工作正常。我以为POW10实际上是作为指向浮点数的指针实现的,因此代码应该相同。您能否解释一下为什么不是这样。
最佳答案
首先阅读此条目,它解释了您的问题:
http://c-faq.com/aryptr/aryptr1.html
然后阅读此后续文章,其中解释了数组和指针之间的区别。
http://c-faq.com/aryptr/aryptr2.html