gpt4 book ai didi

C语言中二维数组作为函数参数来传递的三种方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C语言中二维数组作为函数参数来传递的三种方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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]);
}
 
void main()
{
  char * p[3];
  char str[][5] = { "abc" , "def" , "ghi" };
  func(3, str);
}

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

例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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]);
}
 
void main()
{
  char * p[3];
  char str[][5] = { "abc" , "def" , "ghi" };
  func(3, str);
}

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

例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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" };
  p[0] = &str[0][0];
  p[1] = str[1];
  p[2] = str[2];
  func(3, p);
 
}

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

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

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

总结 。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我的支持.

原文链接:https://www.cnblogs.com/DWVictor/p/10036632.html 。

最后此篇关于C语言中二维数组作为函数参数来传递的三种方法的文章就讲到这里了,如果你想了解更多关于C语言中二维数组作为函数参数来传递的三种方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com