int a;
是C中的声明或定义吗? C ++有什么不同吗?
我一直认为这只是宣言,直到今天......
是宣言还是定义?
答案 0 :(得分:18)
声明描述一个对象,而定义请求创建一个对象。所有定义也是声明,但反之则不然。
在int a;
的情况下,它取决于它在源代码中的位置:
int a;
是一个定义 - 它请求创建一个具有自动存储持续时间的int
变量(当然还有一个声明); int a;
是一个暂定定义(只要类型和链接是可以接受的,就可以有多个);在C ++中,它是一个带有外部链接的普通定义。struct
或union
说明符中,int a;
是成员的声明。答案 1 :(得分:6)
它在您的计划中出现在哪里?
在大多数情况下,它既是声明又是定义。
OTOH,extern int a;
仅为声明。
答案 2 :(得分:0)
考虑:
int a;
这是一个定义和宣言。
考虑以下示例...
int i;
printf("%d", i);
将打印一些垃圾值。这显然意味着它有一个记忆位置。
如果你只是声明一个变量而不是定义它,那就去" extern"关键字。
因此extern int b;
只是一个声明而不是定义。
示例:
extern int var;
int main(void)
{
var = 10;
return 0;
}
因此上面的程序会抛出一个错误,因为" var"在任何地方都没有定义。