为什么sizeof取不到extern的数组大小

来源:互联网 发布:张若昀和蓝盈莹 知乎 编辑:程序博客网 时间:2024/04/27 16:26

今天用sizeof计算一个extern之后的数组的大小,发现总是0,在编译的时候也已经给报错了,但是就是不知道为什么,最后才恍然大悟。

首先sizeof其实在编译期间已经觉得了其计算的大小,extern之后的数组在编译器期间其实只是一个符号而已,不代表任何意义,只有在连接的时候知道了它的地址才会和正在数组的定义的地方连接起来,所以在vc上做如下的操作

externint a[];

sizeof(a);

首先编译器会给你警告,在运行期间去看sizeof(a)的值总是是0;


有一本书叫做《你必须知道的495个C语言问题》有空看一看!