一、函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。C语言的特点之一就在于允许函数的递归调用。
例如:fac(n)函数为求n的阶乘的函数
int fac(int n)
{
if(1 == n)
{
return 1;
}
else
{
return fac(n - 1) * n;
}
}
二、数组作为函数参数
1.整型一维数组作为参数传递
(1)用数组名作函数参数,应该在主调函数和被调用函数分别定义数组。
(2)实参数组与形参数组应类型一致(例如下面均为int型),如不一致,结果将出错。
(3)数组名代表数组的首元素的地址,因此只是将实参数组的首元素的地址传给形参数组。形参数组首元素和实参数组首元素具有同一地址,它们共占同一存储单元,具有相同的值。因此,可以在被调函数中直接修改主调函数中数组的内容。
(4)形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号。有时为了在被调用函数中处理数组元素的需要,需要另设一个形参len,用来传递数组长度,或需要处理的数组元素的个数。
打印整型数组:
求整型数组最大值 :
逆序函数 :
选择排序函数:
冒泡排序函数:
插入排序函数:
二分查找函数:
2.字符数组作为参数传递
strlen函数:
strcpy函数:
strcat函数:
strcmp函数:
3.二维数组作为参数传递
可以用多维数组名作为函数的实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明。例如:int a[ ][4]
传递二维数组时,可以不传递列数,但需要传递二维数组的行数。