【发布时间】:2015-06-09 08:51:04
【问题描述】:
我发现无论如何,我都无法访问在外部文件中定义的数组。所以我在 c 和 c++ 中都做了一些简单的测试:
在 C 中:
main.c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int func();
char arr[100]="";
int main()
{
for(int i=0;i<=9;++i){
func();
printf("%s\n",arr);
}
return 0;
}
func.c
#include<string.h>
#include<stdio.h>
extern char* arr;
int func(){
strcat(arr,"hello"); // try to access arr here
return 0;
}
在 C++ 中:
main.cpp
#include<iostream>
using namespace std;
int func();
char arr[100]="";
int main()
{
for(int i=0;i<=10;++i){
func();
cout<<arr<<endl;
}
return 0;
}
func.cpp
#include<cstring>
extern char* arr;
int func(){
strcat(arr,"hello"); // try to access arr here
return 0;
}
如您所见,非常简单的测试。无论我使用什么方法访问外部文件中的数组,都会出现分段错误。
【问题讨论】:
-
我不确定,但可能是因为在 main 中您将其声明为 arr[100] 而在 func 中您将其声明为 *arr
-
是的。这显然是两种不同的类型。