赞
踩
目录
一、函数介绍
二、库函数
三、自定义函数
四、函数的参数和调用
五、函数的嵌套调用和链式访问
六、函数的声明和定义
七、函数递归
八、总结
一、函数介绍
C 语言中的函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的参数,也可以不接收;将代码段封装成函数的过程叫作函数定义。
二、库函数
1.定义
为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数,方便程序员进行软件开发。
三、自定义函数
1.定义
自定义函数和库函数一样,有函数名,返回值类型和函数参数。 但是不一样的是这些都是我们自己来设计,这给程序员一个很大的发挥空间。
2.语法结构
- ret_type fun_name(para1, * )
- {
- statement;//语句项
- }
-
- ret_type 返回类型
- fun_name 函数名
- para1 函数参数
函数的返回类型取决于程序员的需求,可返回空类型(void)、整型类型(int)等等。
例:我们可以写一个函数来找出两个整数的最大值
- int get_max(int a, int b)//需要返回最大值,是整数,所以返回类型是int
- {
- return(a > b) ? a : b;
- }
- int main()
- {
- int a = 1120;
- int b = 200;
- int max=get_max(a, b);
- printf("最大值是:%d", max);
- return 0;
- }
四、函数的参数和调用
1.实际参数(实参)
真实传给函数的参数,叫实参。
2.形式参数(形参)
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内
- void swap(int x, int y)
- {
- int a = 0;//创建一个整型变量a
- a = x; //将x的值赋给a
- x = y; //将y的值赋给x
- y = a; //将a的值(里面是一开始x的值)赋给y实现交换
- }
- int main()
- {
- int a = 10;
- int b = 20;
- swap(a, b);
- printf("交换后:a=%d,b=%d", a, b);
- return 0;
- }
我们希望交换a、b两值,可以成功吗?我们看运行结果发现是不行的。
运行结构如下:
这是为什么?因为形参并不能改变实参,所以我们在函数内交换的是形参,并不能传给实参,导致了错误,那怎么改正呢?我们需要使用传址调用。
5.传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
- void swap(int *x, int *y)//传址调用,取实参a、b的地址赋给形参x、y
- {
- int n = 0;
- n = *x;//将x的地址给n
- *x = *y;//将y的地址给x
- *y = n;//将n的值给y的地址
- } //这里将形参改变的地址给了实参,起到了改变实参值的作用
- int main()
- {
- int a = 10;
- int b = 20;
- swap(&a, &b);
- printf("交换后:a=%d,b=%d", a, b);
- return 0;
- }
这里我们再查看运行结果,发现就可以如愿以偿的交换两个整数啦!
运行结果如下:
五、函数的嵌套调用和链式访问
- void hello2()
- {
- printf("hehe\n");
- }
- void hello1()
- {
- printf("haha\n");
- hello2();
- }
- int main()
- {
- hello1();
- return 0;
- }
这里我们就在函数hello1内嵌套调用了函数hello2,运行结果如下:
2.链式访问
把一个函数的返回值作为另一个函数的参数。
我们可以举一个经典例子:
- int main()
- {
- printf("%d",printf("%d",printf("%d",43)));
- return 0;
- }
这里的运行结果是4321,这里就使用了链式访问,最右边的printf函数打印的是43,它的返回值43为中间printf函数的参数,所以中间printf函数打印2,它的返回值2为最左边printf函数的参数,所以最左边printf函数打印1 最终,其运行结果就为4321
六、函数的声明和定义
1.函数声明
I. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数
声明决定不了。
II. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。
III.函数的声明一般要放在头文件中。
2.函数定义
- void print(int n)
- {
- if (n > 9)
- {
- print(n / 10);
- }
- printf("%d ", n % 10);
- }
- int main()
- {
- int num = 1234;
- print(num);
- return 0;
- }
我们利用递归,调用函数print,当整型值大于9时,便利用n/10去掉它最左边的位数,并且利用print函数进行下一层,随后再用n%10得到最后一位并进行打印。运行结果如下:
八、总结
通过本次内容学习,我们学习了关于函数的相关知识,包括:库函数、自定义函数、函数的参数和调用、函数的嵌套调用和链式访问、函数的声明和定义、函数的递归。希望大家可以熟练掌握并运用!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。