声明,定义,分配,初始化变量

时间:2015-09-25 20:52:07

标签: c++ initialization declaration definition assign

这是参考C ++。这个问题可以追溯到大约6个月,当时我曾经认为声明是:

int a;

定义是:

a = 5;

另外,那:

int a = 5;

既是宣言又是定义。

我现在明白了:

int a;

是一个定义,而不仅仅是一个声明。 (我不知道为什么)。

此外,还有一些术语,如分配和初始化,为问题添加了更多行话。

所以这是我目前的理解(请纠正任何事情):

int a;    // Declaration and definition

int a = 5 // Declaration, definition, assignation and initialisation.

a = 5;    // Initialising (if for the first time),
          // assigning (if for subsequent times),
          // defining (not sure about this one).

我已经阅读了很多关于这个主题但我仍然感到困惑。有人能解释每个人究竟是什么吗?我知道在这种情况下会出现哲学上的争议,比如偶数,甚至是数字。哈哈,但有人可以试试吗?感谢。

1 个答案:

答案 0 :(得分:0)

声明可能会将一个或多个名称引入翻译单元或重新声明之前声明引入的名称。

定义是某些specific circumstance中的声明。 (即带初始化程序的声明)。这是因为它们必须符合One定义规则。 所有定义都是声明,但反之亦然。

初始化为其定义中的变量提供初始值。初始化也将在其他情况下发生(例如,函数参数传递)

作业用于为现有对象指定新值。

根据您的具体情况

int a;    // definition, default-initialization if it's local, zero-initialization otherwise
int a = 5; // definition, copy-initiaization
a = 5;   // assignment

此外,以下是声明,但不是定义

extern int i;  // declaration but not definition