C语言特性(函数)
2015-12-22 本文已影响0人
JackLu经纬
函数
定义函数
语法格式如下:
函数返回值类型 函数名(形参列表){
//由零条到多条可执行性语言组成的函数
}
函数声明
在如下两种情况下,函数需要先声明,再调用
1.函数定义处于调用的函数后面。
2.函数定义在另一个源文件中。
函数声明有两种形式
1.只声明函数的返回值类型、函数名、形参列表的形参类型,不保留形参名。
2.声明函数的返回值类型、函数名、完整的形参列表,包括形参名。
```
##函数的参数传递机制
```
Objective-C里函数的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传
入函数内,而参数本身不会受到任何影响。
```
##递归函数
```
定义:一个函数体内调用它自身时,被称之为函数递归。函数递归包含一种隐式循环,它会重复执行某段代码,但
这种重复执行无须循环控制。
例:
int fn(int fn){
if (n == 0){
return 1;
}else if(n == 1){
return 4;
}else{
//函数中调用它自身,就是函数递归
return 2 * fn(n - 1) + fn(n - 2);
}
}
函数递归是非常有用的,例如希望遍历某个路径下得所有文件,但这个路径下文件夹的深度是未知的,那么就
可以使用递归来实现这个需求。
```
##数组作为函数参数
```
除了使用数组元素作为参数外,C语言也允许将数组变量(本质上就是一个指针)传入函数,当使用数组变量本身作
为参数时,有如下几点需要注意。
1.声明函数时必须指定数组类型的形参,此时数组类型的形参既可指定长度,也可不指定长度。如果声明函数时形
参是多维数组,则只有最左边的维数可以省略。
2.当数组作为函数的形参时,声明函数的形参类型与调用函数时传入的实参类型必须保持一致。
注:与传入普通变量不同的是,传入数组变量作为参数的实质就是传入一个指针——该指针指向数组的首地址,因此
函数中改变数组元素会对数组本身有影响。
```
##内部函数与外部函数
```
函数本质上是全局性的,因为一个函数总可以被其他函数所调用,但根据函数是否可以被其他源文件所调用,
可以将函数分为内部函数和外部函数。
内部函数:定义函数时使用static修饰,该函数只能被当前源文件中的其他函数所调用,这种函数被称之为
内部函数。
外部函数:定义函数时使用extern修饰,或者不使用任何修饰符。它可以被任何源文件中的函数调用,这种
函数被称之为外部函数。
```