当前位置: 首页 > ds >正文

【C语言干货】一维数组传参本质

文章目录

  • 前言
  • 一、数组传参的本质
    • 1.数组名的退化
    • 2.两种等价的函数声明
  • 总结

前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、数组传参的本质

1. 数组名的退化

在C语言中,当数组作为函数参数传递时,数组名会"退化"(decay)为指向其首元素的指针。这意味着:

  1. 无论函数原型中如何声明参数(int arr[]int *arr),编译器都会将其视为指针

  2. 函数内部接收到的实际上是一个指针变量,而不是整个数组

  3. 因此,sizeof操作符返回的是指针的大小,而不是数组的大小

2.两种等价的函数声明

以下两种函数声明在编译器看来是完全等价的:

c复制下载void func(int arr[]);  // 看似接收数组

无论采用哪种形式,函数内部得到的都是一个指针变量。第一种写法更多是为了代码的可读性,暗示这个指针应该指向一个数组。


总结

C语言这样设计有几个重要原因:

  1. 效率考虑:如果每次传递数组都要拷贝整个数组,对于大数组会非常低效

  2. 历史原因:C语言设计之初就注重效率和接近硬件的特性

  3. 灵活性:可以传递数组的一部分(如arr+5传递第6个元素开始的子数组)

http://www.xdnf.cn/news/4979.html

相关文章:

  • 如何用LOTO示波器测量变压器带宽?
  • 一篇文章讲清楚mysql的聚簇索引、非聚簇索引、辅助索引
  • BGA底部填充胶固化异常延迟或不固化原因分析及解决方案
  • 垃圾回收的三色标记算法
  • <el-cascader中多选多层级点击节点也选中
  • Harmonyos-属性修改器和更新器
  • 低代码云MES、轻量级部署、让智造更简单
  • 探索大语言模型(LLM):词袋法(Bag of Words)原理与实现
  • 参考文献怎么对齐操作
  • Python 基础知识
  • 网络流量分析 | Snort
  • LeetCode 216.组合总和 III:回溯算法实现与剪枝优化
  • SpringBoot快速入门WebSocket(​​JSR-356附Demo源码)
  • 为何Google广告频繁拒登?常见原因与解决方法
  • 图表制作-折线图堆叠
  • 允许别的电脑连接我电脑wsl下5001、5002端口
  • 枚举 · 例13-【模板】双指针
  • 《Scala基础》
  • DeepSeek 赋能金融:从智能分析到高效服务的全链路革新
  • WHAT - react-query(TanStack Query) vs swr 请求
  • VUE——自定义指令
  • LabVIEW 2019 与 NI VISA 20.0 安装及报错处理
  • IEEE PRMVAI Workshop 17 | 智能医疗数据分析与应用
  • Baklib云中台赋能企业内容智管
  • Kubernetes外部访问服务全攻略:生产级方案详解
  • 12.hbase 源码构建
  • PFC(Power Factor Correction)功率因数校正电路
  • 金蝶api对接沙箱环境python代码调试
  • SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(一)
  • 【Bluedroid】蓝牙 SDP(服务发现协议)模块代码解析与流程梳理