C语言 | 函数的基本使用和递归
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:52
文章目录
- 函数是什么?
- 一、C语言中函数的分类
- 二、函数的参数
- 1.实际参数(实参)
- 2.形式参数(形参)
- 三、函数的调用
- 四、函数的声明和定义
- 五、函数递归
函数是什么?
- 在计算机科学中,子程序是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。
- 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。
一、C语言中函数的分类
1、库函数
为了支持可移植性和提高程序的效率,C语言的基础库中提供了一系列库函数,满足一些基础功能,他们不是业务性的代码,在开发的过程中每个程序员都可能用的到,方便程序员进行软件开发。
C语言常用库函数:
- IO函数
- 字符串操作函数
- 字符操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
- 其他库函数
使用库函数,必须包含#include对应的头文件
库函数学习:www.cplusplus.com
2、自定义函数
函数的组成:
ret_type fun_name(para1,*)
{
statement;
}
/*
ret_type:返回值类型
fun_name:函数名
para1,*:形参列表
*/
C语言默认返回值是整形,函数传参要发生形参实例化,这个过程要发生值拷贝。(形参的实例化之后其实相当于实参的一份临时拷贝)
二、函数的参数
1.实际参数(实参)
真实传给函数的参数,叫实参。实参可以是:常量,变量,表达式,函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传给形参。
2.形式参数(形参)
形式参数是指函数名后括号中的变量,因为形式参数只有在函数在被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。
函数传参必定形成临时变量,临时变量的形成是在函数被调用时,但正式的代码执行之前。
例:写一个函数可以交换两个整形变量的内容
#include<stdio.h>
#include<windows.h>
//每调用一次,就会将num的值加1
void add(int *cp){
(*cp)++;
}
//交换两个整形变量的内容
void Swap1(int x, int y){
int tmp = 0;
tmp = x;
x = y;
y = tmp;
}
void Swap2(int *px, int *py){
int tmp = 0;
tmp = *px;
*px = *py;
*py = tmp;
}
int main(){
//int count = 1;
//for (int i = 1; i <= 10; i++){
// add(&count);
// printf("%d\n", count);
//}
int num1 = 1;
int num2 = 2;
Swap1(num1, num2);
printf("Swap1:num1 = %d num2 = %d\n", num1, num2);
Swap2(&num1, &num2);
printf("Swap2:num1 = %d num2 = %d\n", num1, num2);
system("pause");
return 0;
}
结果:
Swap1:num1 = 1 num2 = 2
Swap2:num1 = 2 num2 = 1
请按任意键继续. . .
三、函数的调用
- 传值调用
- 传址调用
例:写一个函数,每调用一次这个函数,就会将num的值增加1。
#include<stdio.h>
#include<windows.h>
//每调用一次,就会将num的值加1
void add(int *cp){
(*cp)++;
}
int main(){
int count = 1;
for (int i = 1; i <= 10; i++){
add(&count);
printf("%d\n", count);
}
system("pause");
return 0;
}