C语言传递二维数组

方法一, 形参给出第二维的长度。

例如:

1#include <stdio.h> 2void func(int n, char str[ ][5] ) 3{ 4 int i; 5 for(i = 0; i < n; i++) 6 printf("/nstr[%d] = %s/n", i, str[i]); 7} 8 9void main() 10{ 11 char* p[3]; 12 char str[][5] = {"abc","def","ghi"}; 13 func(3, str); 14}

方法二,形参声明为指向数组的指针。

例如:

1 1 #include <stdio.h> 2 2 void func(int n, char (*str)[5] ) 3 3 { 4 4 int i; 5 5 for(i = 0; i < n; i++) 6 6 printf("/nstr[%d] = %s/n", i, str[i]); 7 7 } 8 8 9 9 void main() 1010 { 1111 char* p[3]; 1212 char str[][5] = {"abc","def","ghi"}; 1313 func(3, str); 1414 }

 方法三,形参声明为指针的指针。

例如:

1#include <stdio.h> 2void func(int n, char **str) 3{ 4 int i; 5 for(i = 0; i < n; i++) 6 printf("/nstr[%d] = %s/n", i, str[i]); 7} 8void main() 9{ 10 char* p[3]; 11 char str[][5] = {"abc","def","ghi"}; 12 p[0] = &str[0][0]; 13 p[1] = str[1]; 14 p[2] = str[2]; 15 func(3, p); 16 17}

附加,第三种传参方式说明:在函数中使用传参过来的二维数组(指针)进行数组取值的时候不能使用(array[i][j])这种形式来取值。应该将二维数组看成一个一维数组,使用array[i * j + j]这种形式来进行取值。

个人理解:这是因为在传参的时候,我们将array[][]数组当成二级指针来进行传递,所以我认为他是将数组的属性退化成了二级指针的属性,因此这里并不能使用array[i][j]这种方式来进行数组取值。输出格式如下

1int tag = 0;//tag标记,在方法中输出二维数组时所需要的标记 2printf("使用传递过来的二维数组参数输出二维数组\n"); 3for(i = 0; i < rows*columns; i++) { 4  printf("%d,", array[i]); 5  if(tag == columns-1)   { 6    tag = 0; 7    printf("\n"); 8  }   else   { 9    tag++; 10  } 11}

转自: <a href="https://blog.csdn.net/kangxidagege/article/details/79475537"></a>

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593