news 2026/7/13 18:04:52

c语言中的函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
c语言中的函数

什么是函数

在计算机科学中,子程序是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。

-----------------------------------------------------------------------------------------------------------------------------

1.库函数

比如我们在写c语言代码时,想把东西打印到屏幕上,会经常用到一个库函数printf,或者我们在计算一个数的几次方,会用到pow。如果我们每次写一个代码,这些函数都要由我们自己来完成,那么每个人写出的对于这一功能实现代码可能是不一样的,而每个程序员的能力不同,设计出来的函数算法也可能不同,为了支持可移植性和提高程序的效率,c语言就提供了库函数。

常见的库函数

IO函数 input output

字符串操作函数

内存操作函数

时间/日期函数

数学函数

其他库函数

---------------------------------------------------------------------------------------------------------------------------------

2.自定义函数

由自己来设计的函数,和库函数一样,有函数名,返回值类型和函数参数。格式如下:

[返回类型] [函数名]([参数类型1] [参数名1], [参数类型2] [参数名2], ...) { // 函数体:实现具体功能的代码 [return 返回值;] // 无返回值(void)时可省略return }

若函数没有返回值,则在函数名前加加上一个void,而如果函数不需要给它传参数,可以在后面的括号里加void。

---------------------------------------------------------------------------------------------------------------------------------

实际参数(实参):

真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数,指针等无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。

形式参数(形参):

形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了,因此形式参数只在函数中有效。

---------------------------------------------------------------------------------------------------------------------------------

传值调用和传址调用

现在写一个函数Swap,用来交换a和b的值。运行上述代码,发现a和b的值并没有交换。

这是因为x,y和a,b分别占有不同的内存块。假设他们的内存地址如下

虽然把a的值给了x,b的值给了y。但是因为他们所占有的内存块不同,所以对x,y的修改不会影响a和b。这种方法叫做传值调用,适合用于不会修改变量的函数,比如,写一个比较2个数大小的函数,只需要对变量的大小进行判断,而不需要对变量进行更改。

那如果想要交换a,b,我们可以怎么做呢?

我们可以把函数的地址给传给x,y,再用解引用操作符。这样就可以把函数内部的变量和函数外部长生联系。

这种方法叫传址调用,这种方法可以让函数和函数外边的变量建立起真正的联系。

---------------------------------------------------------------------------------------------------------------------------------函数的嵌套调用和链式访问

在 C 语言中,函数的嵌套调用指的是:在一个函数的函数体内部,调用另一个函数(甚至多个函数)的行为。简单来说,就是 “函数调用函数”。

注意:C 语言允许嵌套调用,但不允许嵌套定义

链式访问

把一个函数的返回值当作另一个函数的参数。多个函数调用像 “链条” 一样串联起来,无需借助临时变量存储中间结果。

---------------------------------------------------------------------------------------------------------------------------------

函数声明:
  1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是声明决定不了。
  2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。
  3. 函数的声明一般要放在头文件中的。

函数定义:

函数的定义是指函数的具体实现,交待函数的功能实现。

---------------------------------------------------------------------------------------------------------------------------------

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 21:05:44

基于微信小程序的数字博物馆系统的设计与实现(程序+文档+讲解)

课题介绍在文博资源数字化、展览体验便捷化需求升级的背景下,传统博物馆存在 “线下参观受限、展品解读单一、互动体验不足” 的痛点,基于微信小程序 SpringBoot 构建的数字博物馆系统,适配游客、博物馆管理员、讲解员等角色,实现…

作者头像 李华
网站建设 2026/7/12 21:29:57

代码随想录算法训练营Day49 | Prim算法、Kruskal算法

Prim算法 53. 寻宝(第七期模拟笔试) 1.思路 本题是最小生成树的模板题,图中有n个节点,那么一定可以用 n-1 条边将所有节点连接到一起,并且总权重最小。 Prim 算法:从一个顶点开始,逐步“生长”…

作者头像 李华
网站建设 2026/7/11 12:13:20

30、Linux软件包管理与源码构建全攻略

Linux软件包管理与源码构建全攻略 在Linux系统中,软件包的管理和源码构建是非常重要的操作。下面将详细介绍DEB文件处理、源码构建以及SRPM安装的相关内容。 1. RPM验证报告字符含义 在RPM验证报告中,有一些特定的字符代表着不同的含义,如下表所示: | 字符 | 含义 | |…

作者头像 李华
网站建设 2026/7/10 23:44:33

Flink Rebalance、Rescale、Shuffle 核心区别

Flink 中的 Rebalance、Rescale、Shuffle 是三种核心的数据流分区策略,用于定义上游算子的并行子任务如何将数据分发到下游算子的并行子任务。三者的核心差异体现在数据分配方式、网络开销、适用场景上,选择不当会直接影响作业的性能和数据分布的均匀性。以下是详细的对比与解…

作者头像 李华
网站建设 2026/7/13 6:35:35

42、Linux编程:软件开发工具探索与实践

Linux编程:软件开发工具探索与实践 1. 编程基础概念 在编程过程中,通常会经历编辑、编译和调试的循环,多数程序员需多次重复此流程,直至程序正确运行。除了掌握这些基本步骤,还需熟悉以下术语和概念: - 变量 :用于存储不同类型的数据,可将其视为数据的占位符,如同…

作者头像 李华