c - C中的外部数组没有大小

标签 c arrays sizeof extern

未编译:

int a[];

编译:

extern int a[];

未编译(找不到 sizeof):

printf("%lu\n", sizeof(a)/sizeof(int));

所以问题:

  1. 为什么可以创建外部数组。
  2. 分配了多少内存?

问题原因 - http://users.dcc.uchile.cl/~rbaeza/handbook/algs/4/444.sort.c

extern int maxfiles, maxruns[], actruns[];
for (i=0; i<=maxfiles; i++) maxruns[i] = actruns[i] = 0;

正确吗?

最佳答案

1.) 您尚未创建 extern 数组。相反,您已经声明了一个数组存在,并且它是在其他地方(外部)创建的。在它创建的地方,它确实有特定的大小。

2.) 因为您还没有创建数组,所以没有为其分配大小。 (参见#1)。相反,该数组是在另一个文件/模块/组件(外部)中创建的,这是该数组存在的声明,并且可以在此处访问。

关于c - C中的外部数组没有大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21266777/

相关文章:

c - 链接器找不到现有的静态库文件

java - 为什么这段代码不能在Java中运行?

c - 试图找到两点之间的距离,但我得到了错误的答案 :(

java - TreeMap.higherEntry 返回意外的 null

c++ - 如何获得字符串字符的正确索引?

c - #define 一个无符号按位宏标志的好习惯

python - Numpy 使用二进制掩码迭代颜色 channel 的更好方法

c - 获取包含十六进制值的 LPTSTR 或 CHAR* 的大小

c++ - 为什么 sizeof(int) 与 sizeof(int*) 不同?

C段错误