关于声明、定义、初始化及赋值
声明:告诉编译器或解析器该变量存在,这个行为并不分配内存空间,可以多次出现,只是告诉编译器有这么个对象。
extern int a;//纯声明(有extern关键字),不分配存储空间。
定义:只能出现一次,创建了一个对象,为对象分配内存空间。
int a;//声明+定义(无extern关键字),通常直接叫做定义。分配存储空间。
初始化:在定义变量以后,系统为变量分配的空间内存储的值是不确定的,所以需要对这个空间进行初始化,以确保程序的安全性和确定性,给变量赋默认值。
int a=1;//声明+定义+初始化,通常直接叫做初始化。分配存储空间。
extern int a=1;//声明+定义+初始化,通常直接叫做初始化。分配存储空间。
赋值:变量在分配空间之后的某个时间里,对变量的值进行刷新操作,即修改存储空间内的数据。
a=1;//修改已经定义好的变量a的值为1。不分配存储空间。
说明
区别变量声明和定义的方法:
声明:含有extern关键字且变量没有初始化,不分配存储空间。
定义(初始化):不含extern关键字或者含有extern关键字但是变量被初始化,分配存储空间。
变量可以声明多次;但只能定义一次(一个变量只能在一个源文件中定义)
声明通常放在头文件(.h)中;定义放在源文件(.cpp)中,防止文件被多次引用,重复定义。