<分区>
一个 C++ 程序由两个 .cpp 文件组成,main.cpp 和 f.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
您对该程序的有效性和行为有何评论?详细解释。
我想 f 函数以某种方式非法访问 a 的内存,可能是因为 s 在内存中就在 a 之前,所以出现了一些带有索引的东西……不过我真的不确定,因为我猜 static
也会以某种方式改变事物..