c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:

方法一, 形参给出第二维的长度。
#include <stdio.h>
void func(int n, char str[][5] )
{
int i;
for(i = 0; i < n; i++)
printf("\nstr[%d] = %s\n", i, str[i]);
}

int main()
{
char str[][5] = {“abc”,“def”,“ghi”};//一维数组个数是否指定没关系,够用就行
func(3, str);
return 0;
}

用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:

void Func(int array[3][10]);
void Func(int array[][10]);

二者都是合法而且等价,但是不能把第二维或者更高维的大小省略。


方法二,形参声明为指向数组的指针。
例如:
#include <stdio.h>
void func(int n, char (*str)[5] )
{
int i;
for(i = 0; i < n; i++)
printf("\nstr[%d] = %s\n", i, str[i]);
}

int main()
{
char str[][5] = {“abc”,“def”,“ghi”};//一维数组个数是否指定没关系,够用就行
func(3, str);
return 0;
}

注意:
在void func(int n,char (str)[5])中*array需要用括号括起来。*
这种形式的声明参数是一个指针,它指向具有5个元素的一维数组。因为[]的优先级比 * 的优先级高,故*array必须用括号括起来,否则变成了
void func(int n,char *str[5]);
这时候参数相当于是声明了一个数组,该数组有5个元素。


方法三,形参声明为指针的指针。
例如:
#include <stdio.h>
void func(int n, char **str )
{
int i;
for(i = 0; i < n; i++)
printf("\nstr[%d] = %s\n", i, str[i]);
}

void main()
{
char* p[3];
char str[][5] = {“abc”,“def”,“ghi”};
func(3, str);
}

在函数中使用传参过来的二维数组(指针)进行数组取值的时候不能使用(array[i][j])这种形式来取值。

参考资料:
https://blog.csdn.net/kangxidagege/article/details/79475537
http://www.cnblogs.com/yangxi/archive/2012/03/22/2411452.html

C语言二维数组作为函数参数的使用相关推荐

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

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

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

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

  3. C语言 二维数组做函数参数的几种情况

    (1)       实参为数组元素地址,虚参为元素类型指针 (a)       调用函数:fun(*a,3*4);  //*a也可为a[0] or &a[0][0] 函数: fun(int * ...

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

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

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

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

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

    二维数组存放方式 二维数组在内存中是按行存放的,先存储第一行,在接着存储第二行-.. 二维数组作为函数参数 二维数组作为函数的参数,实参可以直接使用二维数组名,在被调用函数中可以定义形参所有维数的大小 ...

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

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

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

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

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

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

最新文章

  1. Scala自动隐式转换
  2. javascript数组的属性、方法和清空-最全!!!(必看)
  3. 全球计算机视觉顶会CVPR 2019论文出炉:腾讯优图25篇论文入选
  4. HDU 3555 Bomb(数位DP模板啊两种形式)
  5. Git成立14周年快乐:您对Git钟爱什么?
  6. Mac安装sshpass同时解决Calling Non-checksummed download of sshpass formula file from an arbitrary URL报错
  7. 网站中被误解的用户体验设计
  8. 用自动化构建工具增强你的工作流程——gulp
  9. 动力环境监控系统论文_浅析建设智能化动力环境监控系统维护水平论文
  10. Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)
  11. 一道金蝶校园招聘试题数据库笔试题
  12. uni-app 颜色选择器(插件分享)
  13. java对excel加密_随笔:Java 对Excel等文件进行加密、解密
  14. 第1章 Linux系统介绍与环境搭建准备
  15. delphi5开发人员指南_建立开发人员职位的黄金指南
  16. ModHeader 谷歌浏览器安装插件设置jwt
  17. 微信小程序加密消息解密工具类
  18. 实用交互设计工具大盘点
  19. 如何用PyTorch实现递归神经网络?
  20. 以太坊区块链黑客松: 构造下一个数字世界

热门文章

  1. mybatis 丢失最后一个属性为空_热血传奇中那些传说带有隐藏属性的装备,最后一个个人觉得比较坑...
  2. 02. 【Java】语言编程基础
  3. 高数 | 傅里叶级数、狄利克雷收敛定理、正弦级数与余弦级数
  4. 计算机论文章节构成,一篇文章弄懂电脑的组成
  5. ImportError: cannot import name ‘draw_bounding_boxes‘ from ‘torchvision.utils‘
  6. PHP获取上个月当月下一个月的相对应时间的详解
  7. 你了解Java中的Future吗?
  8. 华为荣耀v20是android10,华为良心?8款新老机型升级Android10?荣耀V20也在列
  9. 华为云常用术语和缩写
  10. 2019.07.25-随笔感想