news 2026/10/15 21:17:21

C语言:函数与参数传递

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言:函数与参数传递

一、什么是函数?

计算机为了减少重复写代码的痛苦,更方便人们将一些特殊的使用频率较高的代码进行使用,创造出了函数,我们只需要将其用特定的方法封装,在使用时就不需要关注实现的细节 ,直接当做公式直接使用。

二、函数的五大要素

我们可以把函数当成一个工厂
1.返回类型 工厂做什么 eg: int(这个函数要去得到一个整数)
2.函数名 工厂名 告诉别人是做什么的(见名知意)
3.函数参数列表 工厂原材料 这个函数可能需要什么参数进行处理
4.函数体 加工过程 对参数列表进行相应的处理从而得到结 果,就是具体的流程
5.返回值 加工后得到的产品 函数体处理后的结果,用return关键字交 出去

举个🌰:

// 对应上面的五大要素 int add(int a, int b) { // 1.返回类型(int) 2.函数名(add) 3.参数(a, b) int result = a + b; // 4.函数体(加工过程) return result; // 5.返回值(return 交出产品) }

其中,参数列表中可以没有参数,也可以有多个。

三、参数传递

值传递:

// 加法函数:把两个数加起来,并返回结果 int add(int num1, int num2) { int sum = num1 + num2; return sum; // 把加工好的产品(sum)交出去 } int main() { int a = 5; int b = 8; // 调用工厂(add),把 a 和 b 传进去,用 c 接收返回值 int c = add(a, b); printf("a + b = %d\n", c); return 0; }

在main里,a是5,b是8。当我们调用add(a, b)时,计算机把5和8这两个值,拷贝给了num1和num2。

四、举例

下面我将写几个简单的函数,帮助我们更好的理解函数。

1.判断素数

素数:一个大于1的自然数,除了1和他自己没有别的数可以将其整除,那他就是素数。

int Is_Prime(int n) { if (n <= 1) { return 0; // 1 和小于 1 的数不是素数 } int num = 0; // 计数器,记录在 2 到 n-1 之间有几个能整除 n 的数 for (int i = 2; i <= n - 1; i++) { if (n % i == 0) { num++; //如果能找到可以整除n的数就加一 } } // 如果 num 是 0,说明除了 1 和它自己,没有别的因数了 if (num == 0) return 1; // 是素数 else return 0; // 不是素数 }

2.判断回文数

回文数:如果将一个数字翻转过来看与原数字相同的话那他就是一个回文数, eg: 12321

int isPalindrome(int n) { // 负数不是回文数 if (n < 0) { return 0; } int Or_num = n; // 保存原始数字 int Re_num= 0; // 用于存储翻转后的数字 while (n > 0) { int num = n % 10; // 拿到最后一位 Re_num = Re_num * 10 + num; // 拼接到新数字末尾 n = n / 10; // 去掉原数字最后一位 } // 判断翻转后是否等于原数字 if (Re_num == Or_num) { return 1; // 是回文数 } else { return 0; // 不是回文数 } }

3.判断水仙花数

水仙花数:一个三位数,它的每个位上的数字的“立方和”,等于它自己

int isNarcissistic(int n) { //确保它是三位数 if (n < 100 || n > 999) { return 0; } int Or_num = n; int sum = 0; // 用于累加各位的立方和 while (n > 0) { int num = n % 10; // 拿到最后一位 sum = sum + num * num * num; n = n / 10; // 去掉最后一位 } // 判断立方和是否等于原数字 if (sum == Or_num) return 1; // 是水仙花数 else return 0; // 不是 }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 21:13:00

Hyperledger Fabric记账流程全解析:从交易提案到区块落盘

刚接触Hyperledger Fabric的人&#xff0c;十有八九会在“记账”这两个字上卡住。不是看不懂账本结构&#xff0c;而是搞不清一笔交易从客户端发起之后&#xff0c;中间到底经过哪些节点、哪些阶段、谁的账本先动、谁的后动&#xff0c;最后又是怎么落进区块里的。我自己第一次…

作者头像 李华
网站建设 2026/10/15 21:09:25

24C256 EEPROM连续写翻车解析:页边界与地址回卷避坑指南

简介&#xff1a;这是一份面向嵌入式开发初学者与单片机工程师的24C256存储器中文技术资料&#xff0c;围绕I2C接口EEPROM的存储原理、地址管理与数据传输控制展开&#xff0c;帮助读者理解并规避连续存储中常见的地址越界与数据覆盖问题。资源包内含1个doc文档&#xff0c;压缩…

作者头像 李华
网站建设 2026/10/15 21:07:24

aptitude 解决 python2.7-minimal 版本锁死依赖冲突的完整指南

最近处理一台老服务器的软件包依赖问题时&#xff0c;又碰到一条经典报错&#xff1a;Depends: python2.7-minimal ( 2.7.15_rc1-1)&#xff0c;但系统里已经装了另一个版本。这类问题在旧系统上非常常见&#xff0c;尤其是仓库里还残留着 rc 版本包的时候。很多人的第一反应是…

作者头像 李华