私は2つのファイルに次のプログラムを持っています
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 は実際には float へのポインターとして実装されているため、コードは同一である必要があると考えていました。そうではない理由を教えてください。