当前位置: 首页 > news >正文

C语言第六课:从库函数到自定义

一、函数的概念

C语言中的函数就是一个完成某项特定的任务的一小段代码

在C语言中,我们一般会见到两种函数:库函数自定义函数

二、库函数

1.标准库和头文件

c语言标准中规定了C语言的各种语法规则(if,while,for等等),C语言并不提供库函数(printf,scanf等等)。

库函数相关头文件:https://zh.cppreference.com/w/c/header

C/C++官方的链接(旧版/有搜索栏):https://zh.cppreference.com/w/c/header

cplusplus.com(新版/无搜索栏):https://legacy.cplusplus.com/reference/clibrary/

三、自定义函数

1.一般形式:

tip:

返回类型用来表示函数计算结果的类型,有时候返回类型可以是 void ,表示什么都不返回。

函数名尽量要根据函数的功能起的有意义

参数:如果有参数,要交代清楚参数的类型和名字,以及参数的个数;函数的参数也可以是 void ,明确表示函数没有参数。

{ }括起来的部分被称为函数体,函数体就是完成计算的过程。

ex:

四、形参和实参

1.基础定义

实际参数简称实参,是真实传递给函数的参数,比如上述例子中mian函数中的"a","b"。

形式参数简称实参,是定义函数时,写在函数括号里的变量名,即上述例子中void max函数中的“a”“b”,形参仅在函数内部有效,函数执行结束自动销毁。

形式参数只有在函数被调用的过程中为了存放实参传递过来的值,才会向内存申请空间,这个过程就是形参的实例化

2.形参和实参的关系

形参是实参的一份临时拷贝

调用函数时,实参将自身数据传递赋值给形参,二者单向绑定;函数内对形参的修改是否影响外部实参,取决于数据是否可变;函数结束后形参销毁,绑定关系解除。

五、return 语句

return 后面可以是一个数值,也可以是一个表达式,如果是表达式,则先执行表达式,再返回表达式的结果。

return 后面什么都不写,这种写法适合返回类型是void的情况,表示这个函数不用返回值。

return语句执行后,函数就彻底返回,不再执行后面的代码。

如果return返回值与函数返回类型不一致,系统会自动将返回的值隐式转换为函数的返回类型。

如果函数中存在if等分支语句,则要确保每种情况下都要有返回值。

如果不写函数的返回类型,编译器默认函数的返回类型为int。

函数写了返回类型,但是函数中没有使用return返回值,那么函数的返回值是未知的。

六、数组做函数参数

tip:

函数的形式参数要和函数的实参个数相匹配

函数的实参是数组,形参也可以是写成数组形式的

形参如果是一维数组,数组大小可以省略不写

形参如果是二维数组,行可以省略不写,但是列不能省略

数组传参,形参是不会创建新的数组的

形参操作的数组和实参的数组是同一个数组

七、嵌套调用与链式访问

1.函数的嵌套调用:

2.函数的链式访问

将一个函数的返回值作为另外一个函数的参数,像链条一样将函数串起来就是函数的链式访问

最里层的printf先打印12;

因为12 有2个数字,中间的printf返回2;

因为2是1个数字,因此最外层的printf返回值1;

因此最后的返回结果为1221;

八、函数的声明和定义

函数在使用之前要保证先声明后使用,即要先告诉编译器有一个函数叫什么,参数是什么,返回类型是什么

1.单个文件内部的函数声明以及定义

2.多文件下的函数的声明以及定义

tip:

创建项目的时候,提前创建一个目录,后面把项目相关的文件都放到同一个目录

其实头文件包含的本质是把头文件中的信息拷贝到这里

九、static与extern

static 与extern 都是C语言中的关键字

static静态的意思,可以修饰局部变量、全局变量、函数

exturn可以用来声明来自外部文件的符号

1.作用域和生命周期

1.1作用域:变量能被访问到的有效范围(空间:哪里能访问)

ex:

局部变量的作用域是变量所在的局部范围

全局变量的作用域是整个工程(项目)

1.2生命周期:变量从【创建-->使用-->销毁】完整的存活时间段(时间:内存存活多久)

2.static

2.1 static 修饰局部变量

n 的生命周期变长了,n出了函数也不销毁了,原因是:

static 修饰局部变量改变了变量的生命周期,生命周期的改变本质上是改变了变量的存储类型,本来一个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。存储在静态区的变量和全局变量是一样的,生命周期就和程序的生命周期一样了,只有程序结束,变量才销毁,内存才回收,但作用域是不变的。

2.2 static 修饰全局变量

全局变量具有外部链接属性,static 修饰全局变量后,只能在自己所在的.c文件中使用,别的.c文件就算写extern int num;也访问不到!static 修饰全局变量可以实现文件隔离,防止多文件全局名冲突。

2.3 static 修饰函数

函数与全局变量一样是具有外部链接属性的,用法与全局变量一样。

http://www.jsqmd.com/news/1387790/

相关文章:

  • 船用柴油机故障仿真数据集说明
  • spring-data-jpa-2.3.9 Entity 状态
  • 企业如何定制高效的网站建设方案功能以提升品牌形象与转化率的深度解析
  • 今年 30+,干了 8 年前端开发,转 Agent 开发整整两年了
  • 决策树实战:从原理到Python实现与调优
  • 2026珠海香洲区楼顶漏水避坑指南,本地老牌公司,质保可查 - 房屋修缮
  • 广州网站建设c2c实战指南:从源码搭建到流量变现的避坑与破局
  • Spring Data JPA 2.3.9 版本EntityManager
  • 零一万物API停服应对指南:迁移策略、代码示例与架构优化
  • 高校AI通识课实验平台选型与教材适配路径 - 客啦啦视界
  • 什么是倒置显微镜?为什么生命科学、医学科研都在用它? - 实了个验
  • 微博粉丝管理实战:安全高效清理僵尸粉与无效关注
  • 2026年小棚虾投料机 - 资讯报道
  • 技术演进日志:从日常问题到知识资产的工程化实践
  • 深圳福田区写字楼与办公室搬迁:CBD企业整体迁移、周末错峰服务全指南 - 禧燕搬家
  • uni-app小程序生命周期深度解析:onShow重复执行与TabBar页面加载机制
  • 机械自动化GEO优化公司哪家好:技术叙事构建与AI内容资产运营指南 - 品牌前沿专家
  • 思维导图在文学深度阅读中的应用:以《童年》为例解析可视化学习法
  • 【Bug已解决】[Web] DB-style detection model returns all-zero output on Apple M-series above ~2048px inpu…
  • 2026珠海斗门区楼顶漏水避坑指南,本地老牌公司,质保可查 - 房屋修缮
  • 2026 沈阳正规搬家公司推荐|居民、企业、大件搬运一站式靠谱 - 资讯报道
  • 企业官网搭建全攻略:一份落地可行的网站建设功能清单助你避坑
  • 我们需要根据用户请求,为一个中文技术博客生成标题。用户提供的信息:关键
  • 深圳古董字画艺术品搬运哪家好?专业古董字画艺术品搬运公司:木箱定制|恒温运输|全程保险服务 - 禧燕搬家
  • 2026韶关南雄市楼顶漏水避坑指南,本地老牌公司,质保可查 - 房屋修缮
  • 昆明网站建设王道下拉棒:揭秘那些被忽略但决定生死的用户体验细节与后端架构逻辑
  • GENESIS电生理仿真并行计算优化实战指南
  • 网站建设需求确认书怎么做才靠谱?一份能救命的网站建设需求确认书指南帮你避坑
  • 2026衡阳祁东县楼顶漏水避坑指南,本地老牌公司,质保可查 - 房屋修缮
  • 光伏清洗机器人哪个好:【凌度智能】无损清洁 - 松梢月冷