C语言基础11天:函数
- 人工智能
- 2025-08-24 15:03:02

C语言基础:第11天笔记 内容提要 函数 函数 函数的概论
函数:实现一定功能的,独立的代码模块,我们函数一定是先定义,后使用
使用函数的优势:
1.我们可以通过函数提供功能给别人使用,当然我们也可以使用别人提供的函数,减少代码量2.借助函数可以减少重复性的代码3.实现结构化(模块化)程序设计思想关于结构化设计思想: 将大型的任务功能划分为互相独立的小型的任务模块来设计
函数是C语言的基本组成单元
C语言程序是由一个(必然是main函数)或多个函数组成
函数的分类从函数实现的角度
库函数:C语言标准库实现的并提供使用的函数,比如常见的有scanf(),printf(),strlen()…自定义函数:需要程序员自行实现,开发中大部分函数都是自定义的从函数形式的角度
无参函数: 函数调用时,无需传递,可有可无返回值,
有参函数: 函数调用时.需要参数传递数据,经常需要配套返回值来使用
相关概念:
主调函数和被调函数
主调函数:主动去调用其他函数的函数
被调函数: 被其他函数调用的函数
int main//主调函数 { printf("22");//被调函数 }很多时候,尤其是对自定义函数来说,一个函数有可能是主调函数,又是被调函数
int fun_b() { printf("函数\n"); fun_b() } int main() { fun_(); } 函数的定义 定义语法:
[返回类型] 函数名([形参列表]) --函数头 | 函数首部 { 函数体语句; --函数体,整个()包裹的内容包括返回值都属于函数体 }函数头:
返回类型: 函数返回值的类型
函数名: 函数的名称,遵循标识符命名(不能以数字开头,只能包含字母,数字,下划线,建议:小写+下划线命名法,举例:set_count())
形参列表:用于接收主调函数传递的数据,如果有多个参数,使用,分隔,且每一个形参都需要指明类型
说明:
函数的返回类型,就是返回值的类型,两个类型可以不同,但是必须能够进行转换,举例:
double fun_a() //返回类型:double { return 12; //返回值类型:int } //相当于将int类型的12赋值给了double类型的匿名变量 double res = fun_a();在c语言中还可以定义无类型(即void类型)的函数,这种函数不返回函数值(没有返回值),
void test()//此时这个函数,没有返回值 { printf(); }C语言中,函数的返回类型标识符是可以省略的,如果省略,默认返回int,举例:
//写法1:main的返回类型是int类型,默认的返回值类型是0 main() { } //写法2:等价与写法1.返回值类型是int类型,返回值是0 int main() { return 0;//如果返回类型是int,这里return 0 不写,也是返回0 }函数中返回语句的形式为return(表达式)或者return表达式,其作用是将表达式的值作为函数值返回给主调函数,其中表达式的类型应该与我们函数类型一致(也就是函数类型和返回值类型之间是支持隐式转换或者显式转换)
//写法1 int main() { return(0); } //写法2 int main() { return 0;//推荐 }如果参数列表中有多个形式参数,则它们之间要用,分隔
int avg(int x, int y, int z) { ... }如果形参列表中有多个形参,即使他们的类型是相,在形参列表中只能逐个进行说明
int avg(int x, int y, int z) { ... }如果形参中没有参数,我们可以不写,也可以用void来表示,举例
//写法1 int main(){..} //推荐 //写法2 int main(void){}一个完整c程序中的所有函数可以放在一个文件中,也可以放在多个文件中,举例:
同一个文件:
demo.c
#include <stidio.h> void show() { printf("'1'");``````````````````````````````````` } int mian() { show(); }不同文件中:
a.h
void show(); // 头文件中只放函数的声明,也就是说只有函数头a.c
#include "a.h" // 引入库函数,使用<>引入头文件;引入自定义函数,使用""引入头文件; void show() { printf("hello\n"); }b.c
#include "a.h" int main() { show(); } 案例案例1:
需求:计算1~n之间自然数的阶乘值
#include <stdio.h> /** * 求1~n的阶乘值 * 建议:我们设计的函数,尽量让被调函数改动较小,由主调函数去影响 */ long fun_1(int n) { int i; // 循环变量 long s = 1; // 阶乘值 for (i = 1; i <= n; i++) { s *= i; } return s;// 返回结果给主调函数 } int main(int argc,char *argv[]) { printf("1~5的阶乘结果是:%ld\n",fun_1(5)); printf("1~10的阶乘结果是:%ld\n",fun_1(10)); return 0; } 型参和实参 形参(形式参数)函数定义时指定的参数.形参是用来接受数据的,函数定义时,系统不会为形参申请内存,只有当函数调用时,系统才会为形参申请内存,主要用于存储实际参数,并且当函数返回时,系统会自动回收为形参申请的内存资源(本质上所有函数都有一个return)
实参(实际参数) 函数调用时主调函数传递的数据参数(常量,符号常量,变量,表达式…只要有确定的值),实参就是传递的数据实参和形参必须类型相同, 如果不同时,按赋值规定进行类型转换在C语言中,参数传递必须遵循单项值传递实参只是将自身的值传给形参,而不是实参本身,形参的值改变不会影响实参一个函数中可以有多个return语句,但任一个时刻只有一个return语句被执行. if(num < 0 && num >=100)
int eq(int num) { if(num % 2 == 0) { printf("%d是偶数\n",num); return 0; } printf("%d是奇数\n",num) return 0; }被调函数返回给主调函数的结果数据(可以是变量,常量,表达式… 只要是确定值就可以)
int fun1(int a,int b) { return a + b; } int fun2(int num) { if(num % 2 == 0) return 0; return -1 } 返回值类型一般情况下要和函数中return语句返回的数据类型都一直,如果不一致,以函数定时指定的返回类型为标准.也就是返回值类型和实际返回值的类型可以存在转换转换关系,一般是将返回值类型转返回类型C语言基础11天:函数由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C语言基础11天:函数”