如何在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. 赋值 二维数组的赋值, ...
随机推荐
- 使用静态方法CreateInstance()创建数组
Array类是一个抽象类,所以不能使用构造函数来创建数组.但除了可以使用C#语法创建数组的实例之外,还可以使用静态方法CreateInstance()创建数组. 如果事先不知道元素的类型,该静态方法就 ...
- English Learning -- 0611--When Burnout Is a Sign You Should Leave Your Job
I like the following article from Harvard Business Review, as I ever experienced burnout at work. Ve ...
- Deepin 15.11 install nvidia dirver[mei you an zhuang shu ru fa]
1.firstly, exec: sudo vim /etc/modprobe.d/blacklist-nouveau.conf[create], and input [blacklist nouve ...
- 定时任务-C#线程类 windows服务
原理 最常用的就是C#中 timer类写一个定时方法,然后在把他宿主到windows服务里面. C#中Timer分类 关于C# Timer类 在C#里关于定时器类就有3个 C# Timer使用的方法 ...
- 有关同时进行两条线路的四维dp
今天发现自己完全对这种dp没有思路……我果然太蒻了./落泪.jpg 对于一个N*N的方格图中选择两条线路从左上角到右下角,其实只要用一个数组f[i][j][p][q]记录一个人走到(i,j)另一个人走 ...
- 05 IO流(三)——IO流标准流程
流程 选择源 选择合适的流 操作 关闭流:先打开的后关闭 演示 import java.io.File; import java.io.InputStream; import java.io.File ...
- MySQL事务原理浅析
前言 因为自己对数据的可靠性,可用性方面特别感兴趣,所以在MySQL事务方面看了很多资料,也看了很多博客,所以想到自己也写一篇博客整理整理自己所学内容,尽量用自己的语言解释得通俗易懂. 事务经典场景 ...
- websocket 协议简述
WebSocket 是一种网络通信协议,RFC 6455 定义了它的通信标准,属于服务器推送技术的一种 由于 HTTP 无状态.无连接.单向通信的特性,导致 HTTP 协议无法实现服务器主动向客户端发 ...
- ZooKeeper学习笔记(四)——shell客户端命令操作
ZooKeeper客户端命令行操作 启动服务端 [simon@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start 查看状态信息 Using confi ...
- RabbitMq 报错记录
只记录本人当时遇到的情况,仅作参考 添加消息队列报错:The connection cannot support any more channels. Consider creating a new ...