我在两个文件中有以下程序

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

10-08 12:41