变量声明和定义

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