[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 节)

posted @ 2012-10-14 00:09  邵贤军  阅读(338)  评论(2编辑  收藏  举报