LinuxC 函数
目的:
使程序简单化
函数的定义:
调用函数必须遵循“定义在先、使用在后”的原则。
定义函数格式:
类型说明符 函数名(参数数据类型 变量1,参数变量类型 变量2,……)
{
声明语句部分;
执行语句部分
}
调用后续声明函数时,必须在调用之前先进行声明
例子:
函数的返回值
1. 函数的值只能通过return语句返回主调函数,当遇到return时,方法执行将终止
2. 一个函数最多可以返回一个值,不能返回多个值;不反悔函数值的函数,可以明确定义为“空类型”,类型说明符为“void”.
3. 返回值的数据类型必须与函数声明时返回值的数据类型匹配。如果两者不一致,则以函数类型为准,自动进行类型转换。
4. 如函数值为整形,在函数定义时可以省去类型说明。
例:
形参和实参
一. 形参出现在函数定义中,在函数体内可以使用,离开该函数则不能使用。
二. 实参出想在主调函数中,进入被调函数后,实参变量也不能使用。
1. 形参和实参的功能是做数据传递。发生函数调用时,主调函数把实参的值传递给被调参数的形参从而实现主调函数向被调函数的数据传递。
2. 形参标量只有在被调用时才分配内存单元,再调用结束时,即刻释放所分配的内存单元。因此形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
3. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时它们都必须具有确定的值,以便把这些值传送个形参。因此应预先用赋值,输入等办法是实参获得确定值。
4. 实参和形参在数量上、类型上、顺序上应严格一致,否则会发生“类型不匹配”的错误
5. 函数调用腮红发生的数据传递传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变。
函数的调用
函数的调用方式
l 函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值与表达式的运算。这种方式要求函数是有返回值的。例;z=max(x,y);
l 函数语句:函数调用的一般形式加上分号及构成函数语句。例:printf(“%d”,a);
l 函数实参:函数作为另一个函数调用的实际参数出现。这种情况是该把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例:printf(“%d”,max(s,y));
调用说明
l 函数名称必须与具有好、该功能的自定义函数名称完全一致
l 实参在数量、类型、顺序上应严格和形参——匹配
l 函数调用也是一种表达式,其值是函数的返回值
l 被调函数可以是自定义函数,也可以是系统函数,还可以调用自身
l 被调函数中还可以调用函数
l 调用后续声明的函数时,必须在调用之前先进行声明
递归函数
递归是一种方法(函数)调用自己的编程技术,他在定义自身的同时哟出现了对自身的引用,有点类似与我们高中学的数学归纳法。用递归的目的在于解决一种常见问题,即子任务不过是开始试图解决的相同问题的一个较简单版本
l 发现逻辑“相似性”
l 不要忘记递归出口
例
递归函数的使用
例:
局部变量与全局变量
局部变量也称内部变量
l 在函数内作定义说明的。
l 随函数的调用而生成,随函数调用结束而释放
l 作用域仅限于定义它的函数内,离开该函数后再使用这种变量是非法的。
全局变量也称为外部变量
l 它是在函数外部定义的变量。
l 他不属于哪一个函数,它属于一个源程序文件。
l 其作用域是从定义变量的位置开始到所在源程序文件结束。
l 在函数中使用全局变量,一般应作全局变量说明。只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。但在函数之前定义的全局变量,在该函数内使用可不在加以说明。