您的位置:首页 > 编程语言 > C语言/C++

黑马程序员——C语言笔记之函数

2015-08-11 16:59 232 查看
-------
android培训、java培训iOS培训.Net培训、期待与您交流! ----------

1、函数的概念

完成特定功能的代码段,它也是组成我们C语言源程序的基本单位

优点:

1)高程序的可读性

2)可以高开发的效率

3)提高代码重用性 

2、函数的定义格式:

返回值 函数名(形参列表){

函数体;

//return

}

按照有参数和返回值可分为四种:

有参无返回值:void test(int x,float y){ }

无参无返回值:void test1(){ }

有参有返回值:int max(int x,int y){ return x>y?x:y; }

无参有返回值:int test2(){ return 10;}

3、函数的参数

1)形参和实参

形参:在定义函数的时候,函数名后面小括号中的参数

void test(int x,float y){ } 

实参:调用函数的时候传递的参数

max(56,78); //56、78就是两个实际参数

2)参数的传递过程实质是,将实参的值拷贝一份放到函数形参中

4、函数的返回值

主调函数:

A、B两个函数 ,如果在A中调用了B,A为主调函数,B为被调函数。

被调函数:

被调函数返回给主调函数的值叫做函数的返回值
使用return 关键字进行返回

1) return 0; return (0);

2) return a+b; return a>b?a:b;

3) 如果函数的返回值是 void return ;(程序返回了,不再向下执行)

4) 函数中可以有多个return,但是只有一个起作用。

5、函数的调用

1)函数的声明:

为什么要进行声明?

类似于变量的使用,我们要使用函数,就应该先定义函数,编译器不知道我们是否已经定义了某个函数,为了防止编译器编译的时候报错(函数调用),所以要告诉编译器,我已经定义了哪些函数。

原则:

在调用函数之前,进行该函数的声明。

声明的方法:

技巧:复制函数的头部,加上分号,写在调用方法之前

int max(int x,int y); //声明

2)函数的调用:

格式:函数名(实参列表);

max(56,78); //调用

6、递归函数

一个函数在它的函数体内调用它自身称之为递归函数。

构成条件:

1)自己调用自己

2)存在一个条件能够让递归结束

3)能够找到一个规律,让要解决的问题的规模缩小

递归函数的执行有两个阶段:

1)递推阶段:问题规模缩小的过程

2)回归迭代:迭代计算值的过程

递归的优点和缺点:

优点:遇到问题规模能够缩小,而且有规律的问题的时候,代码比较简洁。

缺点:太耗内存

建议:在程序中不能用太多 

#include <stdio.h>
//用递归法求n得阶乘
// 5!
// 5*4!
// 第一个:递归退出的条件:1! = 1
// 第二个:n! = (n-1)!*n
// 第三个:自己调用自己
int jieCheng(int n){
int ji;
//判断n==1,如果n=1,阶乘的结果就是1
if (n==1) {
ji = 1;
}else{
//如果n != 1,前一个数的阶乘乘以当前的n的值
ji = jieCheng(n-1)*n;
}
return ji;
}
//求 x的y次方
int xy(int x,int y){
int ji;
//判断y==1
if (y==1) {
ji = x;
}else{
// 如果y !=1 此时,计算x的y-1次方 乘以 x
// x y   x y-1 *x
// 2^3   2^2   *2
ji = xy(x,y-1)*x;
}
return ji;
}
int main(int argc, const char * argv[]) {
//    int ji = jieCheng(8);
int ji = xy(2,7);
printf("ji = %d\n",ji);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 函数