news 2026/6/10 15:04:17

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/6/7 21:53:07

34、Linux系统安全防护全攻略

Linux系统安全防护全攻略 1. 文件加密 若仅需对文件进行加密,且无需他人解密,可使用GPG进行对称加密。操作步骤如下: 1. 执行命令 gpg -o secret.gpg -c somefile ,GPG会提示输入密码并要求再次输入以确认。之后,GPG会使用从密码生成的密钥对文件进行加密。 2. 若要…

作者头像 李华
网站建设 2026/6/9 23:56:40

36、网络安全测试工具与互联网服务解析

网络安全测试工具与互联网服务解析 在网络安全和互联网服务的领域中,有许多强大的工具和概念值得我们去探索。下面将详细介绍一些常见的安全测试工具以及互联网服务的相关知识。 安全测试工具 在进行网络安全测试时,有很多自动化工具可供选择。这些工具的功能各有不同,有…

作者头像 李华
网站建设 2026/6/8 20:20:36

陪读蛙Read Frog配置API Key图文教程

一、安装陪读蛙Read Frog 请前往官方地址下载并安装陪读蛙Read Frog: https://www.readfrog.app/zh 在应用商店安装。如下图所示: 安装后将会自动跳转,选择合适的母语。如下图所示: 在浏览器插件中,将陪读蛙Read Frog…

作者头像 李华
网站建设 2026/6/10 11:40:07

45、Linux技术全面指南:符号、网络、应用与安全解析

Linux技术全面指南:符号、网络、应用与安全解析 1. 符号与数字表示 在Linux系统里,有不少特殊的符号和数字表示方法,它们在不同场景下发挥着关键作用。例如,“.”代表当前目录,“..”表示父目录,“/”是根目录,同时在文件系统组织中也有重要意义。“[ ]”作为通配符占…

作者头像 李华
网站建设 2026/6/10 14:34:49

数据为核,驱动智造:产品数据管理(PDM)的核心价值与选型指南

在智能制造与数字化转型的浪潮中,产品研发数据已成为企业的核心战略资产。如何有效管理海量、复杂且关联紧密的产品数据,确保其准确性、一致性与可追溯性,是制造企业提升效率、缩短上市时间的关键。产品数据管理(Product Data Man…

作者头像 李华
网站建设 2026/6/10 14:54:06

Linux线程:轻量高效但需谨慎

Linux线程概述Linux线程是轻量级进程(LWP),属于某个进程并共享其资源(如内存),但各自拥有独立的栈区。相比进程,线程的优势在于创建开销小(仅需分配8MB栈区,而进程需3GB空…

作者头像 李华