繁体   English   中英

“int a;”是C和C ++中的声明或定义吗?

[英]Is “int a;” a declaration or definition in C and in C++?

int a; C中的声明或定义? C ++有什么区别吗?

我一直认为这只是一个宣言,直到今天......

这是宣言还是定义?

声明描述对象,而定义请求创建对象。 所有定义也都是声明 ,但反之则不然。

int a;的情况下int a; ,它取决于它在源代码中的位置:

  • 在一个函数中, int a; 是一个定义 - 它要求创建一个具有自动存储持续时间的int变量(当然还有一个声明);
  • 在文件范围内,答案在C和C ++中是不同的。 在C中, int a; 是一个暂定的定义 (只要类型和联系是可以接受的,可以有多个定义 ); 在C ++中,它是一个带有外部链接的普通定义。
  • structunion说明符中, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM