使用extern将数组与指针链接起来

Aza*_*zle 2 c arrays pointers extern

假设我有两个文件:file1.c-包含一个名为"array [10]"的大小为10的int数组的全局定义.file2.c-包含一个名为"extern int*array"的int指针,这里我试图将这个指针链接到数组.

但是当我检查file1.c中的数组地址和file2.c中的指针值时,它们都是不同的.为什么会这样?

Dan*_*her 5

这不起作用file2.c,你需要

extern int array[];
Run Code Online (Sandbox Code Playgroud)

因为数组和指针不是一回事.两个声明必须具有兼容的类型,并且int*与之不兼容int[N].

实际发生的事情未指定,程序格式错误extern int *array;,但可能sizeof(int*)是数组的第一个字节被解释为地址.