[C++基础]027_数组和指针是不等价的一个实例
file1.c
1 int arr[80];
file2.c
1 extern int *arr; 2 int main() 3 { 4 arr[1] = 100; 5 printf("%d\n", arr[1]); 6 return 0; 7 }
该程序可以编译通过,但运行时会出错。为什么呢?原因是,在另一个文件中用 extern int *arr来外部声明一个数组并不能得到实际的期望值,因为他们的类型并不匹配。所以导致指针实际并没有指向那个数组。注意:一个指向数组的指针,并不等于一个数组。修改:extern int arr[]。(参考:ISO C语言 6.5.4.2 节)