C++ プログラムは、main.cpp と f.cpp の 2 つの .cpp ファイルで構成されます。main.cpp ファイルのコードは次のとおりです。
//main.cpp
#include <iostream>
using namespace std;
void f(char* s,int n);
const int N=10;
static char s[N];
static char a[N];
int main ()
{
int i;
for (i=0; i<N; i++)
a[i]='0'+i;
for (i=0; i<N; i++)
cout<<a[i];
cout<<'\n';
f(s,N);
for (i=0; i<N; i++)
cout<<a[i];
cout<<'\n';
}
この関数f
は、ファイル f.cpp で定義されています。プログラムはエラーと警告なしでコンパイルされます。実行すると、プログラムは定期的に終了し、次のものが残りますcout
。
0123456789
!123456789
このプログラムの有効性と動作について、あなたのコメントは何ですか? 詳細に説明します。
おそらく、メモリ内で s が a の直前にあるため、 f 関数が a のメモリに不正にアクセスしていると思います。そのため、インデックスで何かが発生しますstatic
。