(1)       实参为数组元素地址,虚参为元素类型指针

(a)       调用函数:fun(*a,3*4);  //*a也可为a[0] or &a[0][0]

函数: fun(int *p,int n)  //*p也可为p[]

{   p[i] or *(p+i) }

(b)       调用函数:fun(*a,3,4);  //*a也可为a[0] or &a[0][0]

函数: fun(int *p,int m,int n) //*p也可为p[]

{   *(p+i*n+j)  }

(2)       实参为数组名,虚参为指向行的指针

调用函数:fun(a,3);  //a也可为&a[0]

函数: fun(int (*p)[4],int m) //(*p)[4]也可为p[][4]

{   p[i][j] or *(p[i]+j)  or   *(*(p+i)+j)   }

(3)       实参、虚参都用指针数组

因为二维数组类型为 (*)[] ,指针数组类型为 *[],所以不能把二维数组直接传给指针数组。

调用函数:

int *b[3];   for(i=0;i<3;i++)  b[i]=a[i];
fun(b,3,4);          

函数: fun(int  *p[],int m,int n) //*p[]也可为**p

{   p[i][j] or *(p[i]+j)  or   *(*(p+i)+j)   }

(4)       使用模板编写通用性更强的函数

调用函数:fun<3,4>(a);

函数:template <int M,int N>

fun(int p[M][N])

{    p[i][j]    }

(5)       实参为数组名,虚参数组的引用

调用函数:                     fun(a);

函数:                  template<int M,int N>

fun(int (&p)[M][N])

{    p[i][j] or *(p[i]+j) or *(*(p+i)+j)    }

转载于:https://www.cnblogs.com/hao02171990/archive/2013/04/09/3010864.html

C语言 二维数组做函数参数的几种情况相关推荐

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

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

  2. C语言-二维数组做函数的参数

    文章目录 1 引例 2 观点1 这种使用方法是错误的 3 观点2 根本不需要这么做 4 二维数组做函数参数的方法 4.1 方法1 4.2 方法2 4.3 方法3 5 与Java的不同 1 引例 下面的 ...

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

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

  4. C语言多维数组做函数参数技术推演

    多维数组做函数参数技术 C语言中只会以机械式的值拷贝的方式传递参数(实参把值传给形参) 二维数组参数同样存在退化的问题 等价关系 C语言中只会以机械式的值拷贝的方式传递参数(实参把值传给形参) int ...

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

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

  6. C语言多维数组做函数参数退化原因大剖析

    多维数组做函数参数退化原因 多维数组做函数参数退化原因大剖析 多维数组做函数参数退化原因大剖析 //证明一下多维数组的线性存储 //线性打印 void printfArray411(int *arra ...

  7. C语言多维数组做函数参数会退化,数组做函数参数退化问题

    一.数组做函数参数退化问题 数组做函数参数时,会退化为指针. 1.把数组的内存首地址和数组的有效长度传入函数. 2.实参数组和函数参数数组的数据类型不一样.形参中的数组,编译器会把它当做一个指针处理, ...

  8. C语言二维数组作为函数参数的使用

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. #include <stdio.h> void func(int n, char str ...

  9. 二维数组作为函数参数的用法(c++)

    背景 今天刷题的时候遇到了需要一个大小可变的二维数组作为函数参数进行传递的情况,有点模糊不清,所以查了一些资料,写了这篇博客. 大小固定的二维数组 正确写法如下: void Func(int arra ...

最新文章

  1. 配置内网邮件和外网邮件互发
  2. ISE简介及其下载 安装 和谐 与 卸载
  3. WWW 2021最佳论文亚军:基于属性补全的异质图神经网络新架构
  4. leader选举的源码分析-startLeaderElection
  5. ajax 405报错,使用ajax请求时发生随机HTTP错误405
  6. 安卓系统开机过程中logo和动画
  7. SLAM GMapping(6)扫描匹配器
  8. 解决Mac无法编辑 .bash_profile文件与使用sudo时permission denied报错
  9. java排序学习笔记
  10. 单机 mysql 复制_MySQL单机复制
  11. Redis的安装及原理介绍
  12. Intellij IDEA连接Spark集群
  13. 三言两语话敏捷(2) - 持续集成
  14. java框架_Java 中几种常用的 RPC 框架介绍
  15. 娱乐篇第十期:互联网的事情you意思(十)
  16. 在CentOS中安装MySql数据库教程
  17. python datetime库的基本使用
  18. html如何设置hr 标签的线条粗细,设置hr标签的粗细
  19. 掌握五个元组的用法,让python代码飞得更快
  20. 安卓相机camera2开发知识点

热门文章

  1. 数据结构之顺序表(一)
  2. requests模块相关用法
  3. 纯html5+css3能写出什么惊人效果?
  4. 高并发系统之降级特技
  5. [转载]建立团队沟通协作工作方式
  6. (转ORCLE导入导出命令)
  7. Camera Calibration 相机标定:原理简介(三)
  8. 匿名包装器(function(){})()
  9. 【转载】App.config/Web.config 中特殊字符的处理
  10. 内存不足 java.lang.OutOfMemoryError: Java heap space