背景

今天刷题的时候遇到了需要一个大小可变的二维数组作为函数参数进行传递的情况,有点模糊不清,所以查了一些资料,写了这篇博客。

大小固定的二维数组

正确写法如下:

void Func(int array[3][10]);//写出数组的固定大小
void Func(int array[][10]);//可以省略第一维,但是不能省略第二维

错误写法:

void Func(int array[][]);//此为错误写法
void Func(int array[3][]);此为错误写法

错误原因:从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列。

另外:实参数组维数可以大于形参,实际取形参数组的大小。

大小可变的二维数组

对于int p[m][n];这样大小可变的数组,可以使用如下方法:

void Func(int **p, int m, int n);
//取p[i][j]时使用*((int*)p+ n*i + j);代替
Func((int**)p, m, n);//调用函数的写法

原理:把p当作一个普通的指针,再指明它的维数m和n,然后为二维数组手工寻址*((int*)p+ n*i + j);

二维数组作为函数参数的用法(c++)相关推荐

  1. C-指针,二级指针,二维数组作为函数参数使用,C语言链表(详解)

    一级指针 int *p;            //表示定义一个int型(4字节)的指针p &p                 //表示p自身的地址位置 p                  ...

  2. C语言 二维数组作为函数参数的4种方式

    前言 多维数组中,二维数组是最常用的一种.在C语言编程中,二维数组的定义.取值以及赋值都比较容易,与一维数组类似.然而,在将二维数组作为函数参数传递时,参数结构较复杂,难以理解.本文章是实用型文章,注 ...

  3. 如何将二维数组作为函数参数

    1.函数声明: 将二维数组作为函数参数的函数声明有两种 二维数组型:如 int sum(int ar2[][size]);注意:行数可不声明,但要求列数必须要声明,不然将发生错误! 指针型:如 int ...

  4. c/c++ 一维数组、二维数组作为函数参数、返回值

    c/c++ 一维数组.二维数组作为函数参数.返回值 一.一维数组作为参数 传入数组 int [] 为了规范,常常需要将数组的size一同传入,这是因为C++/C遇到参数为数组时,不会去一个个拷贝数组内 ...

  5. 在C++中如何将二维数组作为函数参数

    一直以来弄不清C++中数组怎么作为参数传入函数中,尤其是最近学了Python之后,Python这种几乎可以把一切作为参数传入函数的方式更是让我在C++中混淆,下面来总结一下二维数组作为函数参数该如何表 ...

  6. C语言 | 二维数组作为函数参数

    1024G 嵌入式资源大放送!包括但不限于C/C++.单片机.Linux等.关注微信公众号[嵌入式大杂烩],回复1024,即可免费获取! 偶然间发现C语言二维数组作为函数的参数是个比较容易出错的问题. ...

  7. C++二维数组做函数参数

    C++二维数组做函数参数 二维数组做函数参数的形式主要有: /对于一个m行n列int元素的二维数组 //函数f的形参形式 f(int daytab[m][n]) {...}//以下两种可以忽略行数 f ...

  8. 用二维数组作为函数参数,编程计算并输出n×n阶矩阵的转置矩阵。

    按如下函数原型,用二维数组作为函数参数,编程计算并输出n×n阶矩阵的转置矩阵. 其中,n由用户从键盘输入.已知n值不超过10. void Transpose(int a[][N], int n); v ...

  9. linux C 二维数组 作为函数参数

    c语言中怎么用二维数组作为函数参数 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3 ...

最新文章

  1. 再见丑陋的 SwaggerUI,这款API文档生成神器界面更炫酷,逼格更高!
  2. ExtJs Ext.panel.Panel和Ext.container.Viewport布局问题
  3. python包介绍:GeoPandas(初识)
  4. spring mvc学习(34):restful的delete
  5. emoji表情过滤处理
  6. boot定时任务开启和关闭 spring_spring-boot 多线程并发定时任务的解决方案
  7. 雷赛运动控制卡能不能用c语言_弱电知识之三:跟我学做全彩屏,认识LED全彩屏的模组、控制卡...
  8. python语言接收信息的内置函数_python接收信息的内置函数是
  9. 是否可以利用光压提高卫星轨道
  10. MATLAB点云重采样,PCL点云曲面重采样三种方法:上采样,下采样,均匀采样
  11. 弹性地基梁板法计算原理_地基计算模型
  12. 英语b计算机考试时间2015年,2014年12月大学英语B 计算机应用基础考试工作安排...
  13. 日语一级800个核心词汇
  14. AndroidStudio 自带avd模拟器WiFi网络受限无法连接
  15. ipynb文件过大打开浏览器崩溃解决方法
  16. 亚马逊asin关键词排名追踪_亚马逊listing关键词的挖掘和布局!让产品关键词排名上首页...
  17. 当你心情不佳的时候,你会选择什么样的方式来放松自己?
  18. CDT工具--用于OSCE等产品的debug工具
  19. 《爆款文案》的读后感作文3000字
  20. 1.证件办理-身份证异地办理流程(深圳)

热门文章

  1. iOS简单MD5加密
  2. 集成学习之Stacking
  3. verilog D触发器
  4. 英语俚语VS汉语俗语:狗改不了吃屎
  5. 几个AAA游戏中的阴影技术
  6. MacBook 复制文件和文件夹路径
  7. 爆肝!用Python制作抖音爆款视频!
  8. ROC曲线和AUC值
  9. 携程“919旅行囤货划算节”两年,已成行业超级IP
  10. 新加坡:迈向智慧国家