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

【看到哪里写到哪里】在C里面怎么传递二维数组呢?

在 C 语言中,传递二维数组作为函数参数时,需要确保函数能够正确解析数组的内存布局。由于 C 语言的二维数组在内存中是连续存储的(按行优先),因此参数传递时必须明确列数或使用动态内存分配。以下是几种常见的传递方式及示例:

1. 明确指定列数

最直接的方式是在函数参数中明确指定二维数组的列数。

// 方式1:明确指定行数和列数
void printArray1(int arr[2][3], int rows, int cols) {for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {printf("%d ", arr[i][j]);}printf("\n");}
}// 方式2:省略行数,但必须指定列数
void printArray2(int arr[][3], int rows) {for (int i = 0; i < rows; i++) {for (int j = 0; j < 3; j++) {printf("%d ", arr[i][j]);}printf("\n");}
}int main() {int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};printArray1(arr, 2, 3);  // 输出: 1 2 3 \n 4 5 6printArray2(arr, 2);     // 输出相同return 0;
}

关键点
  • 列数必须固定:编译器需要知道每行的元素个数,以便计算内存偏移量。
  • 行数可省略:函数内部通过参数 rows 动态获取行数,但列数必须在编译时确定。

2. 使用数组指针(推荐方式)

通过指向数组的指针传递,更清晰地表达参数类型。

// 使用数组指针:指向包含3个int的数组
void printArray(int (*arr)[3], int rows) {for (int i = 0; i < rows; i++) {for (int j = 0; j < 3; j++) {printf("%d ", arr[i][j]);}printf("\n");}
}int main() {int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};printArray(arr, 2);  // 输出: 1 2 3 \n 4 5 6return 0;
}
关键点
  • int (*arr)[3]:声明一个指针 arr,指向包含 3 个 int 的数组。
  • 等价于 void printArray(int arr[][3], int rows),但更明确表达参数类型。
http://www.xdnf.cn/news/768727.html

相关文章:

  • TC3xx学习笔记-启动过程详解(一)
  • COUNT(*) 与 COUNT(列名) 的区别解析
  • MySQL中SELECT查询的执行顺序
  • 【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解
  • SCAU8643--简单选择排序
  • 2506js,活扩控件
  • 基于ubuntu和树莓派环境对游戏进行移植
  • cJSON简单使用
  • uniapp路由跳转toolbar页面
  • 为何ERP系统更倾向使用业务编码作为主键?兼顾可读性与系统集成的设计思考
  • 【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事
  • oracle sql 语句 优化方法
  • 数据库系统概论(十三)详细讲解SQL中数据更新(插入,修改与更新)
  • RocketMQ 消息发送核心源码解析:DefaultMQProducerImpl.send () 方法深度剖析
  • 前端开发知识体系全景指南
  • 小目标检测:YOLOV7改进之双坐标注意力(DCA)
  • Python Day41
  • 神经网络与深度学习(第一章)
  • 链式前向星图解
  • 排序算法C语言实现
  • Linux配置DockerHub镜像源配置
  • Qt实现的水波进度条和温度进度条
  • 神经网络中的梯度消失与梯度爆炸
  • cnn训练并用grad-cam可视化
  • 基于遥感图像深度学习的海洋测深
  • 2024年数维杯国际大学生数学建模挑战赛C题时间信号脉冲定时噪声抑制与大气时延抑制模型解题全过程论文及程序
  • 题目 3230: 蓝桥杯2024年第十五届省赛真题-星际旅行
  • [蓝桥杯]约瑟夫环
  • web架构2------(nginx多站点配置,include配置文件,日志,basic认证,ssl认证)
  • 2025年5月24日系统架构设计师考试题目回顾