news 2026/8/7 6:49:41

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/8/7 18:08:41

Xiaomi 商城页面布局(部分)

HTML部分&#xff1a;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><li…

作者头像 李华
网站建设 2026/8/7 19:17:00

运料小车装卸料控制:西门子1200PLC与TP700触摸屏联机仿真博途16

运料小车装卸料控制西门子1200PLC和TP700触摸屏联机仿真博途16最近在车间折腾运料小车的自动化改造&#xff0c;用西门子1200PLC搭了个装卸料控制系统。正好手头有TP700触摸屏&#xff0c;索性在博途V16里搞了个联合仿真&#xff0c;省得去现场调试吃灰。这个方案特别适合产线还…

作者头像 李华
网站建设 2026/8/6 19:49:50

S32K311启动过程中,向量表重定向

在MCU的启动过程中&#xff0c;NXP官方提供的启动代码会对中断向量表进行重定向&#xff0c;将向量表从flash定向到ram。具体实现分析如下。Vector_Table.sSECTION .intvec:DATA:ROOT(2&#xff09;通过这个命令&#xff0c;声明一个.intvec的段&#xff0c;这条指令下面申明的…

作者头像 李华
网站建设 2026/8/7 8:10:16

从蓝图到产线:高效产品信息传递的桥梁建设

在制造业中&#xff0c;研发设计的精妙构思与生产部门的高效执行之间&#xff0c;存在着一条至关重要的信息传递链。这条链路的畅通与否&#xff0c;直接决定了产品能否从图纸精准、准时地转化为合格的商品。本文将深入探讨这一过程的标准实践、常用工具、潜在挑战及其优化方案…

作者头像 李华
网站建设 2026/8/8 0:34:32

时间复杂度

这种题目是数据结构与算法考研&#xff08;如408&#xff09;或面试中的高频送分题&#xff0c;但也是高频陷阱题。 复习这类题目&#xff0c;不要靠“猜”或者“死记硬背”&#xff0c;而是要掌握一套**“数学建模”**的方法。一旦你建立了数学直觉&#xff0c;这类题看一眼就…

作者头像 李华