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

【黑马程序员】C语言函数

2015-11-17 16:28 316 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、函数的概述

功能相对独立的代码段

二、函数的分类

1.从函数的定义的角度看,函数可分为库函数和用户定义函数

2.语言的函数兼有其他语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数

3.从主调函数和被掉函数之间数据传输的角度来看又可分为无参函数和有参函数

三、自定义函数的书写格式

函数定义到使用分三步:1.声明 2.定义 3.调用函数

函数的基本格式:

返回值类型  函数名称(函数参数){

函数体;

}

三、函数的参数传递过程 

1)形参变量只有在被调用时才分配内存单元 在调用结束时,即刻释放所分配的内存单元。因 此,形参只有在函数内部有效。函数 调用结束返回主调函数后则不能再使用该形参变量。 

2)实参可以是常量、变量、表达式、函数等 无论实参是何种类型的量,在进行函数调用时,它 们都必须具有确定的值,以便把这些 值传送给形参。因此应预先用赋值,输入等办法使实参获得 确定值。 

3)实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。 

四、函数的声明

在主调函数中调用某函数之前应对被调函数进行说声明,这与使用变量之前要先进行声明变量和说明是一样的

五、递归函数的概述及构成条件

1.递归函数该商户及用法

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

2.递归和函数构成条件

1)存在自己调用自己

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

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

3.递归调用注意

1)主调函数就是被调函数

2)在递归函数中应该存在能够让递归结束的条件

四、递归应用

<span style="font-size:14px;">//
//  main.c
//  用递归法求N的阶乘
//
//  Created by Brisinga on 15/11/15.
//  Copyright © 2015年 yan. All rights reserved.
//

#include <stdio.h>

//定义计算阶乘的函数
int factorial(int n){
//定义一个变量保存结果
int result = 0;
if (n==1) {  //定义阶乘退出条件
result = 1;
}else{
result = n *factorial(n-1);  //递归调用
}
return result;   //返回结果
}
int main(int argc, const char * argv[]) {
int result = factorial(5);
printf("%d\n",result);
return 0;
}
</span>

<span style="font-size:14px;">//
//  main.c
//  用递归实现x的y次方
//
//  Created by Brisinga on 15/11/15.
//  Copyright © 2015年 yan. All rights reserved.
//

#include <stdio.h>

//定义递归函数
int xy(int x,int y){

//定义变量保存结果
int result = 0;
if (y==0) {
result = 1; //定义递归控制
}else{

result = x * xy(x, y-1); //递归调用
}

return result;  //返回结果

}
int main(int argc, const char * argv[]) {

int result = xy(3, 3);
printf("%d\n",result);
return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 函数