声明、定义、初始化、赋值(C语言)
变量
声明
用于向程序表明变量的类型和名字。
可以通过使用extern关键字声明变量名而不定义它。
extern声明不是定义,即不分配存储空间。extern告诉编译器:变量在其他文件中定义了,此处只是引用。
如果声明包含初始化表达式,就被当作定义,即使前面加了extern。只有当extern声明位于函数外部时,才可以被初始化
extern double pi=3.1416; // 只有在函数外部时,该语句才能通过编译;否则,语法错误
除此之外,使用typedef关键字也是一种特殊的变量声明方式。
定义
用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。当然,C语言为我们同时提供了3个特例 :
通过宏定义的方式定义的常量
通过inline关键字定义的函数
结构体、共用体的定义
以上前2个特例,在同一个程序中,可以对同名常量或inline函数定义多次。但本质原因是C编译器在编译期间会把宏常量和inline函数展开。
最后1个特例,是因为结构体定义,定义的是一个 数据类型 ,而不是定义一个 变量 !结构体定义的 数据类型 ,能够像我们使用基本的C语言数据类型(例如:int, double, char等)一样去使用。结构体本身并不会被作为数据而开辟内存,真正作为数据而在内存中存储的是这种结构体所定义的变量。
当定义变量时我们同时声明了它的类型和名字。
初始化
在定义变量的同时进行赋值操作,就是初始化。
赋值
给一个已经定义的变量一个新值。要给赋值的变量必须已经定义过了,仅仅声明是不行的。
小结
变量在使用(访问或赋值)前,务必要被声明或定义;
在一个程序中,变量只能定义一次,却可以声明多次;
定义会给变量分配存储空间,声明则不会。
函数
函数的声明和定义区别比较简单,带有{ }的就是定义,否则就是声明。函数的声明只是提供函数的格式规范,定义函数则是提供函数的实现代码。
以下是良好的程序设计风格和惯例:
头文件(.h)中进行函数声明,源文件(.c)中进行函数的定义;
变量的声明统一放到头文件;
=======END=======