如何在C中传递二维数组作为参数?
回答:
在C语言中,有很多方法可以将2d数组作为参数传递。在下面的部分中,我描述了将2d数组作为参数传递给函数的几种方法。
使用指针传递2d数组以在c中运行
多维数组的第一个元素是另一个数组,所以在这里,当我们传递一个2D数组时,它将被分割成一个指向数组的指针。
例如,
如果int aiData [3] [3]是一个整数的二维数组,它将被拆分成一个指向3个整数数组的指针(int(*)[3])。
|
#include <stdio.h> //Size of the created array #define ARRAY_ROW 3 #define ARRAY_COL 3 void ReadArray(int(*piData)[ARRAY_COL]) { ; ; ; iRow < ARRAY_ROW; ++iRow) { ; iCol < ARRAY_COL; ++iCol) { printf("%d\n", piData[iRow][iCol]); } } } int main(int argc, char *argv[]) { //Create an 2D array } }; //Pass array as a parameter ReadArray(aiData); ; } |
将2d数组传递给行和列
函数的原型应该与传递数组相同。换句话说,我们可以说如果int aiData [3] [3]是一个2D数组,那么函数原型应该类似于2D数组。
|
#include <stdio.h> //Size of the created array #define ARRAY_ROW 3 #define ARRAY_COL 3 void ReadArray(int aiData[ARRAY_ROW][ARRAY_COL]) { ; ; ; iRow < ARRAY_ROW; ++iRow) { ; iCol < ARRAY_COL; ++iCol) { printf("%d\n", aiData[iRow][iCol]); } } } int main(int argc, char *argv[]) { //Create an 2D array } }; //Pass array as a parameter ReadArray(aiData); ; } |
使用指向2D数组的指针传递2d数组
如果int aiData [3] [3]是一个整数的二维数组,则&aiData将指向具有3行和3列的2d数组。
|
#include <stdio.h> //Size of the created array #define ARRAY_ROW 3 #define ARRAY_COL 3 void ReadArray(int(*piData)[ARRAY_ROW][ARRAY_COL]) { ; ; ; iRow < ARRAY_ROW; ++iRow) { ; iCol < ARRAY_COL; ++iCol) { printf("%d\n", (*piData)[iRow][iCol]); } } } int main(int argc, char *argv[]) { //Create an 2D array } }; //Pass array as a parameter ReadArray(&aiData); ; } |
如何在C中传递二维数组作为参数?的更多相关文章
- C/C++怎样传递二维数组,转载自CSDN
用二维数组作为参数传递(用二维数组处理矩阵),但是希望接受传递二维数组参数的函数可以处理任意维度的数组(希望矩阵的行数和列数都是不固定的). [以下转帖] ---------------------- ...
- C语言传递二维数组
方法一, 形参给出第二维的长度. 例如: #include <stdio.h> ] ) { int i; ; i < n; i++) printf("/nstr[%d] = ...
- C/C++如何传递二维数组?
用二维数组作为参数传递(用二维数组处理矩阵),但是希望接受传递二维数组参数的函数可以处理任意维度的数组(希望矩阵的行数和列数都是不固定的). ----------------------------- ...
- C#中读取二维数组每位的长度
C#中的二维数组,如int[,] A=new int[a,b];则 a=A.GetLength(0);即可获得二维数组中第一维的长度. b=A.GetLength(1);即可获得二维数组中第二维的长度 ...
- Java中的二维数组
Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...
- iOS中的二维数组
首先我们知道OC中是没有二维数组的,二维数组是通过一位数组的嵌套实现的,但是别忘了我们有字面量,实际上可以和C/C++类似的简洁地创建和使用二维数组.这里总结了创建二维数组的两种方法以及数组的访问方式 ...
- 一些Python中的二维数组的操作方法
一些Python中的二维数组的操作方法 这篇文章主要介绍了一些Python中的二维数组的操作方法,是Python学习当中的基础知识,需要的朋友可以参考下 需要在程序中使用二维数组,网上找到一种这样的用 ...
- php中遍历二维数组并以表格的形式输出
一.索引数组 <?php //使用array()语句结构将联系人列表中所有数据声明为一个二维数组,默认下标是顺序数字索引 $contact1 = array( //定义外层数组 array(1, ...
- Java 中的二维数组
所谓二维数组,可以简单的理解为是一种“特殊”的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空间 或者 如: 2. 赋值 二维数组的赋值, ...
随机推荐
- 大数据架构(PB级)
1.随着互联网快速发展,数据量的快速膨胀,我们日增3000多亿数据量,因此需要针对PB级存储.几百TB的增量数据处理架构设计 2.系统逻辑划分总图: 暂不便透露 3.系统架构图: 4.大数据计算引擎我 ...
- Python 发送微信小程序的模板消息
在小程序的开发过程中,会存在模板消息的发送,具体文档见 这里,模板消息的发送是和语言无关的,这里将简要写一下怎么用 Python 给用户发送模板消息. 通过文档可以知道,发送的时候,需要使用小 ...
- STL源码剖析——iterators与trait编程#2 Traits编程技法
在算法中运用迭代器时,很可能用到其相应类型.什么是相应类型?迭代器所指对象的类型便是其中一个.我曾有一个错误的理解,那就是认为相应类型就是迭代器所指对象的类型,其实不然,相应类型是一个大的类别,迭代器 ...
- STM32F103芯片SPI控制NRF24L012.4G无线模块交互通信实验
1.NRF24L01模块的资料百度搜索一下就有很多.这里我就不做介绍本文主要侧重于应用层面实验介绍与分享. 2.先看下原理图. 根据原理图:写出NRF24L01 C语言驱动文件如下: #includ ...
- vue导入css,js和放置html代码
使用场景:我是从网上找的html前端页面模板,导入找的模板中的css和js到vue中使用. 1.在main.js中全局导入css和js import '@/assets/css/main.css' i ...
- 二十、网卡框架分析、虚拟网卡驱动和DM9621驱动分析
一.网络设备驱动的结构 网卡设备不同于字符设备和块设备, 网络设备并不对应于/dev目录下的文件,它存放在/sys/class/net目录下. Linux系统对网络设备驱动定义了四个层次: 1. 网络 ...
- TensorFlow实现自编码器及多层感知机
1 自动编码机简介 传统机器学习任务在很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难 ...
- JqueryAjax 常用复制
$.ajax({ type : "POST", url : "", data : {}, success : function(data) { } }); $. ...
- ArduPilot存储管理 Storage EEPROM Flash
AP_HAL::Storage 此类可以应用于所有平台.PX4v1平台支持8k的EEPROM,Pixhawk平台支持16k的FRAM铁电存储器 存储大小定义:libraries/AP_HAL/AP_H ...
- 云端的ABAP Restful服务开发
愉快的暑假结束了,今天是小朋友新学期开学后的第一个周日,不知道各位家长是否和小朋友们一起,已经适应了新学期的生活了么? Jerry从少的可怜的属于自己的周末时光挤了一小部分时间出来,写了这篇文章. J ...