C++——变量的声明、定义与初始化
一、变量的声明(declaration)
声明用于向程序表明变量的类型和名字。声明跟定义的不同之处是在前面加了extern修饰符。如下:
extern int i; // 声明变量i为int类型,但是没有分配存储空间。
二、变量的定义
定义用于为变量分配存储空间。定义也是声明,因为定义变量时声明了它的类型和名字。
int i;
定义的变量的同时可以初始化
int i = 10;
三、声明变量时初始化
声明变量时如果加上初始化语句,那么就是定义而不仅仅是声明。
extern int i = 5; // 定义。虽然有extern修饰符,但是也有初始化,所以是定义,而不仅仅是声明。
四、可以重复声明变量,但是不能重复的定义变量
这很好理解。声明没有分配存储空间,定义分配了存储空间。如果重复定义,那么一个变量就具有多个存储空间。访问变量的时候,就不知道要访问哪个存储空间了。
int i; // 定义
extern i; // OK。声明
int i; // Error。重复定义
extern double d = 10.5; // 定义
extern double; // OK。声明
extern double d = 5.0; // Errro。重复定义