新闻详情

新闻详情

首页 / 资讯中心 / 详情

C 语言 | 在函数中操作数组

发布时间:2026/10/1 7:23:20来源:尧图网络
C 语言 | 在函数中操作数组
1. 引言在 C 语言中数组以特殊的方式传递给函数。当你将数组传递给函数时实际传递的是指向其第一个元素的指针。这意味着函数操作的是原始数组而不是副本。理解这一行为对于编写高效且正确的 C 程序至关重要。2. 数组如何传递给函数当你编写一个接受数组作为参数的函数时编译器会将参数视为指针。例如以下两个函数声明是等价的voidprint_array(intarr[],intsize);voidprint_array(int*arr,intsize);两者都告诉编译器arr指向一个整数数组的第一个元素。由于数组是通过引用即指针传递的函数内部所做的任何修改都会影响调用者中的原始数组。3. 将数组传递给函数要将数组传递给函数只需使用不带方括号的数组名。数组名会退化为指向其第一个元素的指针。#includestdio.hvoidprint_array(intarr[],intsize){for(inti0;isize;i){printf(%d ,arr[i]);}printf(\n);}intmain(){intnumbers[]{10,20,30,40,50};intnsizeof(numbers)/sizeof(numbers[0]);print_array(numbers,n);return0;}输出10 20 30 40 50注意在main函数中sizeof(numbers)给出的是数组的总字节数因此除以sizeof(numbers[0])可以得到元素的个数。然而在函数内部sizeof(arr)只会给出指针的大小而不是整个数组的大小。这就是为什么必须显式传递数组大小的原因。4. 在函数内部修改数组由于数组是通过引用传递的你可以在函数内部直接修改原始数组而无需返回任何内容。#includestdio.hvoiddouble_values(intarr[],intsize){for(inti0;isize;i){arr[i]*2;}}intmain(){intnumbers[]{1,2,3,4,5};intnsizeof(numbers)/sizeof(numbers[0]);double_values(numbers,n);for(inti0;in;i){printf(%d ,numbers[i]);}printf(\n);return0;}输出2 4 6 8 10函数double_values直接修改了numbers的元素这些修改在调用返回后于main函数中仍然可见。5. 使用指针运算由于数组参数实际上是一个指针你可以在函数内部使用指针运算来遍历数组。#includestdio.hintsum_array(int*arr,intsize){inttotal0;for(inti0;isize;i){total*(arri);}returntotal;}intmain(){intnumbers[]{5,10,15,20};intnsizeof(numbers)/sizeof(numbers[0]);intresultsum_array(numbers,n);printf(Sum: %d\n,result);return0;}输出Sum: 50在这里*(arr i)等价于arr[i]。两种形式访问的是同一个元素。6. 二维数组传递二维数组时需要指定第二维的大小因为编译器需要知道每一行有多少列才能正确计算地址。#includestdio.hvoidprint_matrix(intmatrix[][3],introws){for(inti0;irows;i){for(intj0;j3;j){printf(%d ,matrix[i][j]);}printf(\n);}}intmain(){intgrid[][3]{{1,2,3},{4,5,6},{7,8,9}};print_matrix(grid,3);return0;}输出1 2 3 4 5 6 7 8 9参数int matrix[][3]表示一个指向包含 3 个整数的数组的指针。第一个维度可以省略但第二个维度必须存在。7. 常见陷阱忘记传递数组大小在函数内部sizeof(arr)返回的是指针的大小而不是数组的大小。务必显式传递元素的个数。在只需要读取时却进行了修改如果函数不应修改数组应将参数声明为const int arr[]以防止意外修改。误以为数组会被复制数组在传递给函数时永远不会被复制。如果需要副本请在函数内部手动创建。8. 总结数组作为指向其第一个元素的指针传递给函数。函数内部的修改会影响原始数组。始终单独传递数组的大小。使用const保护只读数组。对于多维数组除第一维外必须指定所有维度。掌握在函数中操作数组是编写简洁高效 C 代码的关键一步。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

国产企业AI操作系统推荐:2026年信创合规背景下怎么选? 2026/10/1 8:32:29

国产企业AI操作系统推荐:2026年信创合规背景下怎么选?

国产企业AI操作系统推荐:2026年信创合规背景下怎么选?一、为什么"国产"成了2026年企业AI操作系统的必答题?2026年,企业采购AI平台时多了一道必答题:国产化。背景有三个:一是《数据安全法》《个人…

阅读更多 →
AI 智能辅助评标系统 TOP 榜单厂家 —— 圣诺联合智标云平台 2026/10/1 8:32:28

AI 智能辅助评标系统 TOP 榜单厂家 —— 圣诺联合智标云平台

随着招投标行业数字化转型加速,AI 技术深度渗透招标、编制、审查、评标、报告核验全业务链条,AI 智能辅助评标系统成为招标代理机构、企事业单位、公共资源交易中心降本增效、防控合规风险的刚需工具。在众多同类产品中,圣诺联合・圣诺天算智…

阅读更多 →
morphicons架构深度解析:核心永不触碰DOM的冻结契约设计与7KB零依赖图标动画库是怎么炼成的 2026/10/1 8:32:28

morphicons架构深度解析:核心永不触碰DOM的冻结契约设计与7KB零依赖图标动画库是怎么炼成的

morphicons架构深度解析:核心永不触碰DOM的冻结契约设计与7KB零依赖图标动画库是怎么炼成的 【免费下载链接】morphicons Any icon morphs into any other — universal morphing for stroke-based icons with spring physics. Zero dependencies, ~7 KB gzip. 项…

阅读更多 →
AI日报内容策划与运营:从信息筛选到高质量输出的完整指南 2026/10/1 8:32:28

AI日报内容策划与运营:从信息筛选到高质量输出的完整指南

1. 一份AI日报的定位与内容框架设计1.1 为什么选择“日报”这种形式做AI方向的内容整理,日报是最容易坚持、也最容易被低估的一种形式。很多人觉得日报就是“把今天看到的东西列一遍”,但我自己做了两年多之后发现,真正有价值的日报和流水账之…

阅读更多 →
字节8年老兵体感:23年后氛围急转直下,为何老员工只想混过这个Q?到底发生了啥 2026/10/1 8:32:28

字节8年老兵体感:23年后氛围急转直下,为何老员工只想混过这个Q?到底发生了啥

字节8年老兵体感:23年后氛围急转直下,为何老员工只想混过这个Q?到底发生了啥 一位在脉脉上自述8年司龄的老员工发出了强烈的反差感:18到23年间人人遵守字节范,23年后却急转直下,线下聊了几十位七八年的同学…

阅读更多 →
有效汇报方法——汇报透明化,多说说你花时间与心思的地方 2026/10/1 8:32:15

有效汇报方法——汇报透明化,多说说你花时间与心思的地方

一、我以为的汇报是列出我做了什么我以前一直觉得,汇报嘛,就是把干了什么说清楚就行了。后来我才发现,不是“说清楚”的事,是我说出来的那些东西,在领导耳朵里,根本不算“工作”。第一次意识到这个问题&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉