int a[2][2]={ {4, 6}, {9, 11} };

我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做?

第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器无法分配这样的数组,所以要这样传int a[][3]

第二种方法是传递指针数组方式,即int (*a)[3]
第三种是传递指针方法。

具体实施见代码:

//二维数组传参问题示例
#include<iostream>
using namespace std;
//方法1:传递数组,注意第二维必须标明
void fun1(int arr[][3],int iRows)
{for(int i=0;i<iRows;i++){for(int j=0;j<3;j++){cout<<arr[i][j]<<" ";}cout<<endl;}cout<<endl;
}
//方法二:一重指针
void fun2(int (*arr)[3],int iRows)
{for(int i=0;i<iRows;i++){for(int j=0;j<3;j++){cout<<arr[i][j]<<" ";}cout<<endl;}cout<<endl;
}
//方法三:指针传递,不管是几维数组都把他看成是指针,
void fun3(int*arr,int iRows,int iCols)
{for(int i=0;i<iRows;i++){for(int j=0;j<3;j++){cout<<*(arr+i*iRows+j)<<" ";}cout<<endl;}cout<<endl;
}
int main()
{int a[2][3]={{1,2,3},{4,5,6}};fun1(a,2);cout<<endl;fun2(a,2);cout<<endl;//此处必须进行强制类型转换,因为a是二维数组,而需要传入的是指针//所以必须强制转换成指针,如果a是一维数组则不必进行强制类型转换//为什么一维数组不用强制转换而二维数组必须转换,此问题还没解决,期待大牛!fun3((int*)a,2,3);cout<<endl;
}/*
#include<iostream>
using namespace std;
void fun(int *a,int length)
{int i;for(i=0;i<length;i++){cout<<a[i]<<" ";}cout<<endl;
}
int main()
{int a[4]={1,2,3,4};fun(a,4);cout<<endl;return 0;
}
*/

二维数组作为参数传递问题相关推荐

  1. 关于二维数组作为参数传递给函数的问题

    刚碰到要写一个函数func,要传入一个二维数组给该函数,于是写成func(int a[][]);但马上又发现将二维数组传给函数时必须指定第二维的维数,因为函数传递的是一个指向一个一维数组的指针,这个一 ...

  2. 二维数组作为参数传递

    1.在函数中传递二维数组,可以用指针的形式,也可用数组的形式,但是一定要每一行的长度(也就是列的个数) 例如:int function(char (*p)[10])或者 int function(ch ...

  3. c语言二维数组参数传入,C语言二维数组、参数传递的理解

    首先定义一个数组:a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 }; #define _CRT_SECURE_NO_WARNINGS #include #inc ...

  4. C语言二维数组、参数传递的理解

    首先定义一个数组:a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 }; #define _CRT_SECURE_NO_WARNINGS #include < ...

  5. java 二维数组作为参数传递_java JNI 二维数组作为方法参数传递给本地

    java里面有如下本地定义: private static native int setFilter(final int fd, final int[][] array_filter); c++中对应 ...

  6. 如何将二维数组作为函数的参数传递

    如何将二维数组作为函数的参数传递 声明: 如果你是得道的大侠,这篇文章可能浪费你的时间,如果你坚持要看,我当然感觉很高 兴,但是希望你看完了别骂我!如果你发现我这篇文章有错误的话,你可以提出批评以及 ...

  7. 【C++基础学习】二维数组的动态分配及参数传递

    1. C语言动态分配二维数组 (1)已知第二维 char (*a)[N];//指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m); printf(&q ...

  8. [原创]二维数组的动态分配及参数传递

    1. C语言动态分配二维数组 (1)已知第二维 Code-1 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char *) * m); p ...

  9. 二维数组作为形参的参数传递问题[08-0704]-转

    2008-07-04 19:06 以下是网上摘抄的一段: 首先,我引用了谭浩强先生编著的<C程序设计>上面的一节原文,它简要介绍了如何将二维数组作为参数传递,原文如下(略有改变,请原谅): ...

最新文章

  1. 一起学nRF51xx 5 -  ppi
  2. (十) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
  3. sql server 中将datetime类型转换为date,或者time
  4. NVIDIA GPU 架构梳理
  5. javaweb教务管理系统_基于Java web的教务管理系统
  6. 播放RTMP协议的流媒体的几种选择 1
  7. Bezier(贝塞尔)曲线的轨迹规划在自动驾驶中的应用(一)
  8. 微信朋友圈服务器缓存,如何找到微信朋友圈照片缓存
  9. 用极限定义证明微积分基本定理
  10. centos 7.6安装WeADMIN ITOSS步骤
  11. Google Bot 简介
  12. 我他妈的怎么成了酷抠族!
  13. EGL接口介绍(转)
  14. 常用遥感卫星数据汇总
  15. Sublime Text 3-->汉化版
  16. 美团基于知识图谱的剧本杀标准化建设与应用
  17. 手工检测SQL注入漏洞
  18. “封转开”行情或再现 低仓位封基现套利机会
  19. 2020年网络推广方案怎么做?
  20. 数论相关_最大公约数最小公倍数

热门文章

  1. java 根据 SVN changeLog 文件 生成增量升级包
  2. GitHub上一些有意思地址/有趣的网站:收藏链接
  3. 数据分析面试题-面试话术
  4. 沪漂大专程序员,一边跟刘畊宏健身,一边拿22k的offer
  5. JavaWeb项目实战 第四部分 Linux
  6. eclipse中文版 中英文切换 + 全语言转换
  7. 逐句回答,流式返回,ChatGPT采用的Server-sent events后端实时推送协议Python3.10实现,基于Tornado6.1
  8. Ubantu 一条命令安装宝塔
  9. Python 进程间的通信
  10. 数量周期 复杂现象背后的推动力,可能是极其简单的原理。科学的目标之一就是发现纷 繁复杂的自然现象背后的简单法则。爱因斯坦的相对论是这方面的典范例证。