[英]Is “int a;” a declaration or definition in C and in C++?
是int a;
C中的声明或定义? C ++有什么区别吗?
我一直认为这只是一个宣言,直到今天......
这是宣言还是定义?
声明描述对象,而定义请求创建对象。 所有定义也都是声明 ,但反之则不然。
在int a;
的情况下int a;
,它取决于它在源代码中的位置:
int a;
是一个定义 - 它要求创建一个具有自动存储持续时间的int
变量(当然还有一个声明); int a;
是一个暂定的定义 (只要类型和联系是可以接受的,可以有多个定义 ); 在C ++中,它是一个带有外部链接的普通定义。 struct
或union
说明符中, int a;
是会员的声明。 它在你的程序中出现在哪里?
在大多数情况下,它既是宣言又是定义。
OTOH, extern int a;
只是一个声明。
考虑:
int a;
这是一个定义和声明。
考虑以下示例......
int i;
printf("%d", i);
将打印一些垃圾值。 这显然意味着它有一个内存位置。
如果您只想声明一个变量而不是定义它,那么请选择“extern”关键字。
因此extern int b;
只是一个声明,而不是一个定义。
例:
extern int var;
int main(void)
{
var = 10;
return 0;
}
因此,上述程序将抛出错误,因为“var”未在任何地方定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.