C语言变量的定义、声明、初始化、赋值

1687 2020-12-30 09:08

声明:告诉编译器或解析器该变量存在,这个行为并不分配内存空间,可以多次出现,只是告诉编译器有这么个对象。用于向程序表明变量的类型和名字。

extern int a;//纯声明(有extern关键字),不分配存储空间。

定义:只能出现一次,创建了一个对象,为对象分配内存空间。还可为变量指定初始值。定义也是声明,extern声明不是定义,extern通知编译器变量在其他地方被定义

int a;//声明+定义(无extern关键字),通常直接叫做定义。分配存储空间。

初始化:在定义变量以后,系统为变量分配的空间内存储的值是不确定的,所以需要对这个空间进行初始化,以确保程序的安全性和确定性,给变量赋默认值。

int a=1;//声明+定义+初始化,通常直接叫做初始化。分配存储空间。
extern int a=1;//声明+定义+初始化,通常直接叫做初始化。分配存储空间。

赋值:变量在分配空间之后的某个时间里,对变量的值进行刷新操作,即修改存储空间内的数据。

a=1;//修改已经定义好的变量a的值为1。不分配存储空间。

如何清晰的区分变量声明和定义

如果声明同时进行了初始化,就一定是定义,即使前面加了extern。
只有当extern声明位于函数外部时,才可以被初始化。

赋值是变量运行过程中获取的新值。

说明

区别变量声明和定义的方法:

声明:含有extern关键字且变量没有初始化,不分配存储空间。

定义(初始化):不含extern关键字或者含有extern关键字但是变量被初始化,分配存储空间。

变量可以声明多次;但只能定义一次(一个变量只能在一个源文件中定义)
声明通常放在头文件(.h)中;定义放在源文件(.cpp)中,防止文件被多次引用,重复定义。

全部评论

·