C语言中的函数
目录
- 概述——对函数的理解
- C语言中函数的定义和声明
- 函数允许的参数类型
- 函数允许的返回类型
- 递归
概述
由于有些代码段在编写程序的时候经常会用到,此时我们为了减少代码文件的长度和增加代码的可读性和可维护性,我们常常就会把这些常用的具有特定功能的代码段脱离出来封装到一个函数上,当我们需要使用这种功能时,就只要调用函数就可以实现我们想要的功能
C语言中函数的定义和声明
函数的定义
函数返回类型 函数名 (参数列表){
}例如:void function(int variable){}
函数的声明
函数返回类型 函数名(参数列表)
例如:void function(int);
函数允许的参数类型
基本参数类型
如:int,float,double等等;
结构体类型
例如:void operateStruct(student stu){}
指针类型
例如:void changeValue(int *a){}
数组类型
当数组有标记长度时,传进一个参数就行;
当数组没有标记长度时,需要传进两个参数;
例如:
void operateArray(int array[10]){}
void operateArray(int array[ ],int length)
函数参数的传值方式
实参传递给形参,形参和实参不是指同一个数据,形参更像是实参的拷贝,值传递
函数允许的返回类型
空返回类型 void
基本数据类型
结构体类型
例如:student returnStruct( );
指针类型
例如:int *returnPointer();
递归
函数直接或间接调用自身
举例说明
将一个数作为字符串打印(注意问题:数字是以反序生成的:低位数字先于高位数字生成,但它们必须以与此相反的次序打印;解决方法:依次放进一个数组中进行反序打印;使用递归)
void printd(int n){
if(n < 0){
putchar('-');
n = -n;
}
if(n / 10)
printd(n / 10);
putchar(n % 10 + '0');
}
注意
函数递归调用自身时,每次调用都会得到一个与以前的自动变量集合不同的新的自动变量集合
递归并不节省存储器的开销,因为递归调用过程中必须在某个地方维护一个存储处理值的栈。递归的执行速度并不快,但递归代码比较紧凑