前言
欢迎来到我的博客
个人主页:北岭敲键盘的荒漠猫-CSDN博客
本文主要整理c语言中函数的相关知识点
适合有编程基础的人快速掌握。。。。
函数分类
系统函数:
系统内置的函数,include包含进入之后可以直接使用
用户函数:
用户自定义的函数,自己写。
用户函数定义
语法:
函数返回类型 函数名(类型 参数,类型 参数){
说明部分
语句部分
}
案例演示:
#include <stdio.h>float aver_age(float a, float b);int main()
{float a = 5.6, b = 7.2, re;re = aver_age(a, b);printf("%f", re);
}float aver_age(float a, float b)
{// 这个函数是用来求平均数的float result;result = (a + b) / 2.0;return result;
}
这里定义了一个求平均数的函数。
函数声明
如上案例中,我在main函数上面写了一个
float aver_age(float a, float b);
因为程序是自上向下执行,我们把函数放在了主函数下面,主函数不知道有这个函数。
我们就需要把这个写到main函数上面,保证能找到这个函数。
(int型返回函数,被调函数在主函数之前定义)可以不去声明。但是有点乱,还是把函数统一声明一下比较得劲。
函数嵌套
描述:就是我们在一个函数中调用另一个函数。
案例:
主函数嵌套调用a函数,a函数调用b函数,b函数输出字幕。
#include <stdio.h>
// 声明函数
void a();
char b();int main(){ // 主函数a(); // 调用函数a
}void a(){b(); // 函数a中调用函数b
}char b(){printf("成功利用a函数调用b函数"); // 函数b输出内容
}
链式访问
描述:就是传参的时候,我们传的是一个函数,把一个函数的结果当做另一个函数的参数。
案例演示:
a函数返回1,当做参数给b,b输出a的返回值。(实际上就是传入个1,输出1)
#include <stdio.h>int main(){ //主函数调用b函数b(a()); //b函数传入a函数的结果
}int a(){ //a函数返回一个1return 1;
}int b(int a){ //b函数输出a函数的内容printf("%d", a);
}
传值传参与传址传参
传值传参:我们复制一份相同数值的变量放到函数中执行。途中这个变量发生了变化并不影响函数外面的原本的参数。
传址传参:我们就是把这个变量传到了这个函数中,它发生的任何改变都是改变的他本身。
案例演示:
传值传参
#include <stdio.h>
int change(int a, int b)
{int s;s = a;a = b;b = s;
}int main(void)
{int a, b;scanf("%d %d", &a, &b);printf("a=%d,b=%d\n", a, b);change(a, b);printf("a=%d,b=%d", a, b);
}
输入结果如下:
可以看到,我们用这个交换a,b数值的函数处理a,b。
但是最后输出的结果并没有改变。
传值传参
#include <stdio.h>
int change(int *a, int *b)
{int s;s = *a;*a = *b;*b = s;
}int main(void)
{int a, b;scanf("%d %d", &a, &b);printf("a=%d,b=%d\n", a, b);change(&a, &b);printf("a=%d,b=%d", a, b);
}
结果展示
可以看到用传址传参给他操作真正的变量。