黑马程序员----C语言学习笔记之函数
来源:互联网 发布:淘宝买家可以延长收货 编辑:程序博客网 时间:2024/05/16 18:56
------Java培训、Android培训、iOS培训、.Net培训--------
C语言之函数
1.函数的概述
2.1从函数定义的角度看,函数可分为库函数和用户自定义函数两种
库函数:由C系统提供,用户无须定义,也不在程序中做类型说明,只需要在程序前包含有该函数原型的头文件即可直接调用。如:printf,scanf等
用户自定义函数:由用户按需要编写的函数,对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调用函数模块中还必须对该被调用函数进行类型说明,然后才能使用。
2.2 从语言的函数兼有其他语言中的函数和过程两种功能这个角度看,又可把函数分为有返回值函数和无返回值函数两种
有返回值函数:此类函数被调用执行完成后将向调用者返回一个执行结果
无返回值函数:无须向调用者返回执行结果
2.3 从主调函数和被调用函数之间数据传送的角度看又可分为无参函数和有参函数
无参函数:函数在定义,说明和调用时都不带参数
有参函数:函数在定义,说明和调用时都带参数
3.函数的基本格式:
返回值类型 函数名称(参数){
函数体;
}
4.函数的声明
4.1 在主调函数中,调用某函数之前应对该被调函数进行说明(声明),这与使用变量之前先要惊醒变量声明一样。
4.2 声明形式:
返回类型 函数名(参数列表。。);
4.3 例如:
4.4函数的使用流程:
声明------> 定义 ----------> 调用
函数声明的作用:
告诉编译器这个函数已经存在了,告诉编译器被调函数返回的数据类型,以便在主调函数中处理被调函数返回的数据。
4.5 注意事项
a.函数声明的返回值类型是整型,则不用声明,会有警告,但不会有错误
b.如果被调函数写在主调函数之前,此时可以不用声明
5. 函数的调用
6.递归函数概述及构成条件
6.1 一个函数在它的函数体内调用自身,就称为递归函数。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用自身,每调用依次就进入新的一层。
必须在函数中添加终止函数递归调用的条件,这样可以层层返回。
6.2 注意事项
6.2.1 主调函数就是被调函数
6.2.2 在地柜函数中应该存在能够让递归结束的条件
6.3 构成递归的条件:
6.3.1 存在自己调用自己
6.3.2 存在一个条件,能够让递归结束(否则,是死循环)
6.3.3 能够找到一个规律,让要解决的问题的规模缩小
6.5 递归举例
6.5.1 计算5的阶乘
分析:5! = 4! * 5;
4! = 3! * 4;
.....
n! = (n - 1)! * n;
6.5.2 实现x的y次方
分析:x^y = x * (x^(y-1));
C语言之函数
1.函数的概述
C源程序是由函数组成的。可以说C程序的全部工作都是由各种各样的函数完成的,所以也把C语言称为函数式语言。
2.1从函数定义的角度看,函数可分为库函数和用户自定义函数两种
库函数:由C系统提供,用户无须定义,也不在程序中做类型说明,只需要在程序前包含有该函数原型的头文件即可直接调用。如:printf,scanf等
用户自定义函数:由用户按需要编写的函数,对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调用函数模块中还必须对该被调用函数进行类型说明,然后才能使用。
2.2 从语言的函数兼有其他语言中的函数和过程两种功能这个角度看,又可把函数分为有返回值函数和无返回值函数两种
有返回值函数:此类函数被调用执行完成后将向调用者返回一个执行结果
无返回值函数:无须向调用者返回执行结果
2.3 从主调函数和被调用函数之间数据传送的角度看又可分为无参函数和有参函数
无参函数:函数在定义,说明和调用时都不带参数
有参函数:函数在定义,说明和调用时都带参数
3.函数的基本格式:
返回值类型 函数名称(参数){
函数体;
}
4.函数的声明
4.1 在主调函数中,调用某函数之前应对该被调函数进行说明(声明),这与使用变量之前先要惊醒变量声明一样。
4.2 声明形式:
返回类型 函数名(参数列表。。);
4.3 例如:
void show();//在调用前先声明,否则主函数会无法识别show函数int main(int argc, const char * argv[]){ show(); return 0;}void show(){printf("A");}
4.4函数的使用流程:
声明------> 定义 ----------> 调用
函数声明的作用:
告诉编译器这个函数已经存在了,告诉编译器被调函数返回的数据类型,以便在主调函数中处理被调函数返回的数据。
4.5 注意事项
a.函数声明的返回值类型是整型,则不用声明,会有警告,但不会有错误
b.如果被调函数写在主调函数之前,此时可以不用声明
5. 函数的调用
<span style="white-space:pre"></span>int max(int a, int b){ return a > b ? a : b; } int main(){ //5.1 实参是整型变量 int m = max(23,22); //5.2 实参是变量 int a = 4, b =6; m = max(a, b); //5.3 实参是一个表达式 m = max(a + 4, b + 5); // 5.4 函数调用时的注意事项 5.4.1 函数表达式 如:m = max(34, 10) + 10;//前提是函数有返回值 5.4.2 函数语句。函数调用作为另外一个函数的实参 如:求三个数的最大值 m = max(mac(1, 2), 3 ); 5.4.3 函数名不能与变量名重名 }
6.递归函数概述及构成条件
6.1 一个函数在它的函数体内调用自身,就称为递归函数。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用自身,每调用依次就进入新的一层。
必须在函数中添加终止函数递归调用的条件,这样可以层层返回。
6.2 注意事项
6.2.1 主调函数就是被调函数
6.2.2 在地柜函数中应该存在能够让递归结束的条件
6.3 构成递归的条件:
6.3.1 存在自己调用自己
6.3.2 存在一个条件,能够让递归结束(否则,是死循环)
6.3.3 能够找到一个规律,让要解决的问题的规模缩小
6.5 递归举例
6.5.1 计算5的阶乘
分析:5! = 4! * 5;
4! = 3! * 4;
.....
n! = (n - 1)! * n;
<span style="white-space:pre"></span>int calc(int a){ if (a == 0) { return 1; } return a * calc(a -1);}int main(int argc, const char * argv[]){ int a = 5; printf("5! = %d", calc(a)); return 0;}
6.5.2 实现x的y次方
分析:x^y = x * (x^(y-1));
<span style="white-space:pre"></span>int cifang(int x, int y){ if(y == 1){ return x; } return x * cifang(x, y - 1);}int main(int argc, const char * argv[]){ printf("5^2 = %d", cifang(5, 2)); return 0;}
0 0
- 【黑马程序员】C语言学习笔记之函数(八)
- 黑马程序员----C语言学习笔记之函数
- 黑马程序员-----C语言学习之函数
- 黑马程序员----C 语言学习笔记之指针函数与函数指针
- 黑马程序员-ios学习笔记-C语言scanf函数
- 黑马程序员——C语言笔记之函数
- 黑马程序员-----c语言学习笔记之预处理指令、函数、变量
- 黑马程序员IOS基础---C语言学习之函数
- 【黑马程序员】C语言学习笔记之数组(九)
- 【黑马程序员】C语言学习笔记之错题集
- 【黑马程序员】C语言学习笔记之指针(十一)
- 【黑马程序员】C语言学习笔记之字符串(十)
- 【黑马程序员】C语言学习笔记之枚举(十三)
- 【黑马程序员】C语言学习笔记之typedef(十五)
- 【黑马程序员】Objective-C语言学习笔记之小知识点
- 黑马程序员---C语言学习笔记之二
- 黑马程序员---C语言学习笔记之三
- 黑马程序员---C语言学习笔记之四
- 项目实战No12 推荐关注栏目
- SQL语句操作(增删改查)
- 文件处理命令-目录处理命令
- MySQL相关基础函数
- Android学习实践:4.让Activity全屏及改变文字和背景颜色
- 黑马程序员----C语言学习笔记之函数
- 一起学CC3200之OTA固件升级(使用HTTP方式下载APP:初级篇)
- css
- git and eclipse
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- 格雷码的实现
- Eclipse 添加 Python 主题
- HDU - 2639 Bone Collector II(第K大01背包)
- 【随便做做|线段树】POJ3667 Hotel