C语言二维数组作为函数参数的使用
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语言二维数组作为函数参数的使用相关推荐
- C语言 二维数组作为函数参数的4种方式
前言 多维数组中,二维数组是最常用的一种.在C语言编程中,二维数组的定义.取值以及赋值都比较容易,与一维数组类似.然而,在将二维数组作为函数参数传递时,参数结构较复杂,难以理解.本文章是实用型文章,注 ...
- C语言 | 二维数组作为函数参数
1024G 嵌入式资源大放送!包括但不限于C/C++.单片机.Linux等.关注微信公众号[嵌入式大杂烩],回复1024,即可免费获取! 偶然间发现C语言二维数组作为函数的参数是个比较容易出错的问题. ...
- C语言 二维数组做函数参数的几种情况
(1) 实参为数组元素地址,虚参为元素类型指针 (a) 调用函数:fun(*a,3*4); //*a也可为a[0] or &a[0][0] 函数: fun(int * ...
- C语言-二维数组做函数的参数
文章目录 1 引例 2 观点1 这种使用方法是错误的 3 观点2 根本不需要这么做 4 二维数组做函数参数的方法 4.1 方法1 4.2 方法2 4.3 方法3 5 与Java的不同 1 引例 下面的 ...
- C-指针,二级指针,二维数组作为函数参数使用,C语言链表(详解)
一级指针 int *p; //表示定义一个int型(4字节)的指针p &p //表示p自身的地址位置 p ...
- C语言二维数组作为函数参数传递
二维数组存放方式 二维数组在内存中是按行存放的,先存储第一行,在接着存储第二行-.. 二维数组作为函数参数 二维数组作为函数的参数,实参可以直接使用二维数组名,在被调用函数中可以定义形参所有维数的大小 ...
- C++二维数组做函数参数
C++二维数组做函数参数 二维数组做函数参数的形式主要有: /对于一个m行n列int元素的二维数组 //函数f的形参形式 f(int daytab[m][n]) {...}//以下两种可以忽略行数 f ...
- linux C 二维数组 作为函数参数
c语言中怎么用二维数组作为函数参数 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3 ...
- 如何将二维数组作为函数参数
1.函数声明: 将二维数组作为函数参数的函数声明有两种 二维数组型:如 int sum(int ar2[][size]);注意:行数可不声明,但要求列数必须要声明,不然将发生错误! 指针型:如 int ...
最新文章
- Scala自动隐式转换
- javascript数组的属性、方法和清空-最全!!!(必看)
- 全球计算机视觉顶会CVPR 2019论文出炉:腾讯优图25篇论文入选
- HDU 3555 Bomb(数位DP模板啊两种形式)
- Git成立14周年快乐:您对Git钟爱什么?
- Mac安装sshpass同时解决Calling Non-checksummed download of sshpass formula file from an arbitrary URL报错
- 网站中被误解的用户体验设计
- 用自动化构建工具增强你的工作流程——gulp
- 动力环境监控系统论文_浅析建设智能化动力环境监控系统维护水平论文
- Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)
- 一道金蝶校园招聘试题数据库笔试题
- uni-app 颜色选择器(插件分享)
- java对excel加密_随笔:Java 对Excel等文件进行加密、解密
- 第1章 Linux系统介绍与环境搭建准备
- delphi5开发人员指南_建立开发人员职位的黄金指南
- ModHeader 谷歌浏览器安装插件设置jwt
- 微信小程序加密消息解密工具类
- 实用交互设计工具大盘点
- 如何用PyTorch实现递归神经网络?
- 以太坊区块链黑客松: 构造下一个数字世界
热门文章
- mybatis 丢失最后一个属性为空_热血传奇中那些传说带有隐藏属性的装备,最后一个个人觉得比较坑...
- 02. 【Java】语言编程基础
- 高数 | 傅里叶级数、狄利克雷收敛定理、正弦级数与余弦级数
- 计算机论文章节构成,一篇文章弄懂电脑的组成
- ImportError: cannot import name ‘draw_bounding_boxes‘ from ‘torchvision.utils‘
- PHP获取上个月当月下一个月的相对应时间的详解
- 你了解Java中的Future吗?
- 华为荣耀v20是android10,华为良心?8款新老机型升级Android10?荣耀V20也在列
- 华为云常用术语和缩写
- 2019.07.25-随笔感想