变量声明和定义
int x;
这是宣言还是定义?
当我写下面的代码时,
#include int main(void) { int x; printf("%p",&x); return 0; }
它打印一些地址。 因此,在分配内存时, int x;
不能只是一个宣言。 这是一个定义吗?
从C标准(n1256) :
6.7声明
…
5声明指定一组标识符的解释和属性。 标识符的定义是该标识符的声明:– 对于一个对象,导致为该对象保留存储;
– 用于function,包括function体; 101)
– 对于枚举常量或typedef名称,是标识符的(唯一)声明。
在这种情况下, int x;
是一个定义(或一个定义声明)。
int x
; 是一个定义。 extern int x;
只是一个宣言。 extern int x = 3;
也是一个定义。 HTH