这是C中的定义吗?

时间:2014-02-26 20:38:52

标签: c declaration definition

根据C标准,这被认为是一个定义

int x; 

因为它声明x并分配存储空间。但这也是一个定义吗?

int *x;

也就是说,声明指针变量或数组变量是否分配存储?我猜不是因为我们必须使用malloc。

2 个答案:

答案 0 :(得分:6)

int* x;是一个定义。它分配存储来存储指针。它不为整数分配任何存储 - 如果您不想指向现有变量(或其他内存位置),那么这就是您需要malloc的原因。

纯粹的声明类似extern int x;extern int* x;,然后在不同的编译单元中有相应的定义。

答案 1 :(得分:4)

int *x;分配存储空间。变量x的存储空间等于sizeof(int *)。如果它在块作用域,则包含垃圾值,如果它在文件范围,则包含空指针值。