C语言基础 函数

来源:互联网 发布:免费软件编程入门自学 编辑:程序博客网 时间:2024/04/29 23:36
 函数

函数:完成特定功能的代码块
作用:管理代码
优点:提高代码的可读性
· 提高代码的复用性
· 提高代码的可维护性
函数:函数名不可以重复定义
要给函数起个有意义的名字
函数特点:只有调用才会执行

函数的定义格式
形参列表
返回类型 函数名称(参数类型 参数名称,参数类型 参数名称)
语句;

}

如何去定义一个函数:
1根据函数的功能给函数起一个有意义的名字
2 确定需不需要传入一些补充的值
3 确定需要返回什么类型的数据给函数调用者
4完成函数功能

void 当函数没有返回值的时候,就将函数的返回值类型声明为void

当函数返回值类型为void的时候,return语句可以省略

什么时候需要形式参数:当我们完成某些功能,有写数据我们不确定,那么这时候就需要外界告诉我们.

定义一个有形参有返回值函数
计算两个函数的和
返回值类型: 就是函数执行完毕之后返回什么类型的值给函数调用者
int sum(int a , int b)
{
return a + b;
}

形参: 当定义函数的时候,函数名称后面小括号中的参数称为形式参数,简称形参
实参: 当调用函数的时候,函数名称后面小括号中的参数称为实际参数简称实参

1.实参与形参是一一对应的
2.形参是什么类型的那么实参也必须传入什么类型的值
3.形参列表中不可以有同名的形参变量
4.在函数内部也不可以直接定义与形参同名的变量
5.基本数据类型作为函数参数传递的时候作为值传递

基本数据类型作为函数参数传递的时候是值传递
值传递:仅仅是把实参的值赋值给形参,改变形参的值,并不影响实参值

主调函数:调用其他函数的那个函数
被调函数:在其他中被调用的函数
1.函数定义中声明是什么返回值类型,那么在主调函数中就必须用相同类型的变量接收
2.什么样的返回值类型就必须能返回什么样类型的值,确保返回的值的类型与函数定义中返回值的类型一致.
3.如果函数的返回值不为空,必须返回一个值
Return作用:
1.返回数据给调用者
2.结束函数

1.在返回值为void的函数中,可以用return来提前结束函数
2.在用一个函数中可以有多个return 语句,但仅仅有一个ruturn

注意点:在C语言中没有函数重载的概念,它区分函数仅仅是根据函数的名称,只要是名称相同就是重复定义,无论形参是否不同

在C语言中不允许函数嵌套:也就是说在函数内部不可以再定义其他函数
函数可以嵌套调用,在一个函数内部可以调用其他的函数,被调用的这个函数内部还可以再调用其他函数.

函数声明 : 就是把函数头拷贝到调用它的前面
作用:告诉编译器这个函数已经存在
int sum( int a , int b );

如果一个函数没有声明返回值类型,那么它返回值默认是int
我们写代码的时候必须要带上返回值类型
函数的声明与函数的定义务必要保持一致

--------------------------------------------------------------
 递归函数

递归函数能不使用就不使用
因为函数调用是有成本,它要消耗一定的资源

递归函数:自己调用自己的函数
计算 1+ 2 + 3 + …. + n
1.确定fun(n) 与 fun(n - 1)的关系
2.确定函数的种植条件
fun( n ) = 1+ 2 + 3 + …. + n;
fun( n - 1 ) = 1 + 2 + 3 + … + n-1;
fun( n ) = fun ( n - 1 ) + n
函数终止条件
fun( 1 ) = 1;

int sum( int n)
{
printf(“死掉用%d\n”,n);
if ( n == 1)
{
return sum(n - 1) + n;
}
}

计算 : n! = 1 * 2 * 3 * … * n
1.确定fun(n)与fun( n - 1 )之间的关系
fun(n) = fun ( n - 1) * n
2.确定函数终止条件
fun(1) = 1;
3.计算法 m的n次方
fun ( m , n )= m * m * m … * m(一共有n个m)
fun ( m , n -1 )= m * m * m … * m(一共有n-1个m)
确定关系n 与 n-1 之间的关系
fun(m , n) = fun (m , n -1) * m;
fun( m , 1 ) = m;

int myPow( int m , int n )
{
if ( n == 1){
return 1;
}
return myPow( m , n - 1)* m;
}










0 0