蓝鸥iOS培训讲师推荐:技术天下,掌握一门过硬的技术成为如今最强有力的资本,走到哪都能吃得开,那么iOS开发是如今最流行的行业之一,也是同学追求的目标!

一个函数一般由两部分组成:声明部分和执行语句

声明部分的作用是对有关的标识符(如变量,函数,结构体,共用体等)的属性进行说明,对于函数,声明和定义的区别是明显的,前边已说明,函数的声明是函数的原型,而函数的定义是函数功能的确立,对函数的声明是可以放在声明部分中的,而函数的定义显然不在函数的声明部分范围内,它是一个文件中的独立模块。

对变量而言,声明与定义的关系稍微复杂一些,在声明部分出现的变量有两种情况:一种是需要建立存储空间的(如int a; );另一种是不需要建立存储空间的(如extern int a;),前者称为定义性声明(defining declaration),或简称为定义(definition),后者称为引用性声明(referenceing declaration),广义地说,声明包括定义,但并非所有的声明都是定义,对“int a;” 而言,它是定义性声明,既可说是声明,又可说是定义,而对“extern int a;” 而言,它是声明而不是定义,一般为了叙述方便,把建立存储空间的声明称为定义,而把不需要建立存储空间的声明称为声明,显然这里指的声明是狭义的,即非定义性声明,例如:

int main( )
{
   extern int a;//这是声明不是定义,声明a是一个已定义的外部变量
   …
}
int a;//是定义,定义a为整型外部变量

外部变量定义和外部变量声明的含义是不一样的,外部变量的定义只能有一次,它的位置在所有函数之外,而同一文件中的外部变量的声明可以有多次,它的位置可以在函数之内,也可以在函数之外,系统根据外部变量的定义分配存储单元,对外部变量的初始化只能在定义时进行,而不能在声明中进行,所谓声明,其作用是向编译系统发出一个信息,声明该变量是一个在后面定义的外部变量,仅仅是为了提前引用该变量而作的声明,extern只用作声明,而不用于定义。

用static来声明一个变量的作用有二: (1)对局部变量用static声明,使该变量在本函数调用结束后不释放,整个程序执行期间始终存在,使其存储期为程序的全过程,(2)全局变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。

不过大家一定要注意:用auto,register,static声明变量的时候,是在定义变量的基础上加上前面的关键字,不能单独用,应该写成这样的形式“static int a;”

本章小结:这样一来,大家就能够掌握关于C++变量的声明和定义的相关内容,及其用法,如有不懂得地方可相互沟通!