声明(declaration)、定义(definition)、初始化(initialization)、赋值(assignment)
一、声明和定义的区别
- 声明是将一个名称引入程序(告诉编译器这个函数或变量在某处可找到,它的模样象什么)。
- 定义提供了一个实体在程序中的唯一描述,涉及到内存空间的分配以及初始值的设定(“在这里建立变量”或“在这里建立函数”。它为名字分配存储空间)。
- 声明和定义有时是同时存在的。
二、声明和定义的区别
- 以下情况定义也是声明
int LKAMaxSped = 150; //定义就是声明
注意1:extern声明不是定义,不分配存储空间。
extern int LKAMaxSped; //声明,不是定义
注意2:如果使用extern关键字时,对变量进行了初始化,那就是定义。
extern int LKAMinSped = 30; //是定义
- 以下情况声明仅仅是声明
1: 仅仅提供函数原型:void LAK();
2: extern int LKAMinSped;
3: class A;
4: typedef 声明;
5: 在类中定义的静态数据成员的声明
例如
class A{
public:
static int a; //声明
};
- 以下情况声明仅仅是声明
1: 在类定义之外,定义并初始化一个静态数据成员。如 int A::a = 0;
2: 在类外定义非内联成员函数。
三、初始化和赋值
- 初始化(Initialization) 初始化是指变量在创建的同时获得的初始值
- 赋值是变量定义后的操作,效果是改变变量的值,或者说是用新值来替换旧值