数组元素作函数实参
数组元素可以作用函数实参,不能用作形参,因为形参是在函数被调用时临时被分
配存储单元的,不可能为一个数组元素单独分配存储单元(数组是一个整体,在内存中占着连
续的一段存储单元),再用数组元素做函数实参时,把实参的值传给形参,是”值传递“方式,
数据传递的方向是从实参到形参,单向传递。
数组名作函数参数
用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实
参时,向形参(数组名或指针变量)传递的是数组首元素的地址。
形参数组和实参数组数据类型应一致。
形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号。
局部变量
1,在函数的开头定义
2,在喊室内的复合语句内定义
3,在函数的外部定义。
在复合函数外的地方不能使用的变量叫做局部变量。
全局变量
在函数之外定义的变量成为外部变量也就是全局变量。全局变量可以为本文件中其
他函数所共用。他的有效范围为从定义变量的位置开始到本原文件结束。
变量的存储方式和生存期
静态存储方式是指在程序运行期间由系统分配固定的储存空间的方式。
动态存储方式则是在程序运行期间根据需要进行动态的分配储存空间的方式。
全局变量是储存在静态储存区中的开始执行是给全局变量分配储存区,程序执行完毕就
释放,在程序执行中他们占据固定的储存单元。
在动态存储区存储以下数据:
1,函数形式参数。再调用函数是给形参分配储存空间。
2,函数中定义的没有关键字static声明的变量,即自动变量。
3,函数调用时的现场保护和返回地址等。
在动态存储空间调用两次相同函数时分配给这些函数的空间可能是不同的。
局部变量的生存周期并不代表整个函数的执行周期。
每一个函数和变量都有两个属性:数据类型和数据的存储类别。
C的储存类别包括4种:自动的(auto),静态的(statis),寄存器的(register),外
部的(extern)。根据变量的储存类别,可以知道变量的作用域和生存期。
局部变量的储存类别
1.自动变量
函数中的局部变量,如果不专门声明为static(静态)储存类别,都是动态地分配存储空
间的,数据存储在动态储区中。函数中的形参和在函数中定义的局部变量,都属于此类。这类局部
变量成为自动变量(auto)。
实际上”auto“关键字可以省略,不写auto则隐含指定为”自动储存类别“属于动态储
存方式。
2.静态局部变量(static局部变量)
在使用局部变量的值时,希望函数调用结束后不消失而继续保留原值,即占用存储单元
不释放,在下次调用时继续使用保留的数值,就是静态局部变量,用关键字static声明。