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

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

例如:

#include

void func(int n,  int a[][size])

{

  /* access array */

  a[i][j];

}

void main()

{

  int a[10][10];

  func(10, a);

}

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

例如:

#include

void func(int n, int (*a)[size])

{

a[i][j]; /* right */

}

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

例如:

#include

void func(int n, int **a)

{

a[i][j]; /* wrong, 编译器不知道第二维长度无法定位元素 */

  /* access by address */

  *(a + row_size * i + j);

}

上面的都是针对声明的静态数组的情形,一般对于动态数组可以用void func(int **a)或int func(int *a[])这种形式。特别要注意int *a[]与int (*a)[]的区别,前者声明指向数组的指针,后者声明指向特定长度的数组的指针。

PS:“我是一名从事了10年的老程序员,最近我花了一个月整理了一份最适合2020年学习的c/c++项目实战以及基础教程干货,送给每一位编程小伙伴,这里是小白聚集地,欢迎初学和进阶中的小伙伴。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以跟我一起学习,技术大牛、学习资料助你早日成为一名优秀的程序员,快来和志同道合的小伙伴一起加油学习、一起成长进步吧!
官方企鹅群:720168573

c语言二维数组

c语言二维数组

c语言二维数组

c语言二维数组

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2021-09-25
  • 2022-02-14
  • 2022-12-23
  • 2021-10-17
  • 2021-09-27
猜你喜欢
  • 2021-06-12
  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2021-06-15
  • 2021-07-09
相关资源
相似解决方案