🍊博客主页:Geekwyz的江湖背景 🎉欢迎关注🔎点赞👍收藏??留言📝 🌟本文由 Geekwyz原创 🙏作者水平很有限,如果发现错误,欢迎留言
1.前言
2.函数概述
构成C程序的基本单元是函数,函数中包含程序的可执行代码, 每个C程序的入口和出口都位于main函数中,但并不需要把所有指令都放到main函数中,一般的做法是将程序划分为如干个模块,每个模块完成一个功能,这些模块我们称之为函数。我们之前已经学过scanf,prinf这些函数。
函数有三部分组成:分别是函数返回值,函数名,形参列表,语句体组成。
在学习下一章之前,我们先了解一下什们是源文件,库函数,和用户自定义函数
- 源文件:
- 库函数:由C语言的创造者提供,用户无需直接定义,调用前也不必做类型声明,但需要在程序开始包含有该函数原形的头文件,例如使用
printf 函数时需要包含stdio.h 输入输出库 - 用户自定义函数:用户编写的用来实现特定功能的
3.函数的定义和声明
返回值类型 函数名 {
函数体
}
实现一个两数相加的函数
int add(int a,int b){
return a + b;
}
int add(int a,int b);
4.函数参数
- 形式参数
形式参数就是函数后面的小括号中的东西 - 实际参数
调用函数时,函数名后的括号中的参数称之为实际参数 函数的参数可以是常量,变量,数组,指针等
#include<stdio.h> int add(int a,int b);
int add(int a,int b){
return a + b; }
int main(){
add(1,2);
return 0;
}
#include<stdio.h>
void showMember(int num);
int main(){
int array[10];
for (int i = 0;i < 10;i++) {
array[i] = i;
}
for (int i = 0;i < 10;i++) {
showMember(array[i]);
}
return 0; }
void showMember(int num) {
printf("%d\n",num);
}
#include<stdio.h>
void Evaluate(int array[10]); void Display(int array[10]);
int main(){
int array[10];
Evaluate(array);
Display(array);
return 0; }
void Evaluate(int array[10]){
for (int i = 0;i < 10;i++) {
array[i] = i;
} } void Display(int array[10]){
int i;
for (int i = 0;i < 10;i++) {
printf("%d\n",array[i]);
}
}
- 3.可变长数组作为函数参数
数组作为函数参数时,如果未指明数组大小,就属于长度可变的数组作为函数参数 现在我们来实现两个字符串的连接
#include<stdio.h>
double getAverage(int arr[],int aize);
int main(){
int blance[5] = {100,2,3,17,50};
double avg;
avg = getAverage(blance,5);
printf("%f",avg); }
double getAverage(int arr[],int size){
int i;
double avg;
double sum = 0;
for (int i = 0;i < size;i++) {
sum += arr[i];
}
avg = sum / size;
return avg;
}
5.函数的调用与返回值
函数名(形参);
result = 3 * add(形参)
定义一个add(int a,int b) 函数,实现a,b的相加 看个例子:
#include<stdio.h> int add(int a,int b);
int add(int a,int b){
return a + b; }
int main(){
int c = add(1,2);
printf("%d\n",c);
int d = add(1,2) * 3;
printf("%d\n",d);
return 0;
}
- 函数参数的调用
函数调用还可以出现在函数的参数中,此时函数的返回值将作为参数
#include<stdio.h> int add(int a,int b);
int add(int a,int b){
return a + b; }
int main(){
int a = add(add(1,2),2);
printf("%d",a);
return 0;
}
6.函数的返回值
在函数体中,经常看到这样一个语句
return 0;
这句话有两个意思
7.函数的递归
函数的递归函数就是自已调用自已
#include<stdio.h>
int Rescuvie (int n){
if (n == 0) {
return 1;
}
return n * Rescuvie(n - 1); }
int main(){
int n;
scanf("%d",&n);
printf("%d",Rescuvie(n));
return 0;
}
- 递归的过程
1.Rescuvie(5) 2.5 * Rescuvie(4) 3.5 * 4 * Rescuvie(3) 4.5 * 4 * 3 * Rescuvie(2) 5.5 * 4 * 3 * 2 * Rescuvie(1) 6.5 * 4 * 3 * 2 * 1 7.5 * 4 * 3 * 2 8.5 * 4 * 6 9.5 * 24 120
|