是"int a;" C和C++中的声明或定义?

lex*_*lex 8 c c++ syntax declaration

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

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

这是宣言还是定义?

caf*_*caf 19

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

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

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

  • 对最后一个项目的评论:在C++中,`int a;`作为类说明符中的成员声明是一个定义. (2认同)

Ben*_*igt 6

它在你的程序中出现在哪里?

在大多数情况下,它既是宣言又是定义.

OTOH,extern int a;仅是声明.

  • 在文件范围,`int a;`是一个声明和一个暂定的定义. (3认同)