C语言二维数组怎么写好

时间:2025-12-20 10:52:58 C语言

C语言二维数组怎么写好

  有同学在面对二维数组的时候,常常会犯浑。尤其是使用函数传参的时候,有老师讲到一维数组传参后就等价于一级指针,部分同学举一反三自学成才,想当然地认为二维数组传参后就等价于二级指针,这是错误的。

  假如,有如下代码:

  int a[2][3]; /pic/p>

  function(a); /pic/p>

  上述代码中,就是将一个二维数组传递给一个函数,那么这个函数怎么接受这个参数呢,答案是这样的:

  void function(int a[2][3]) /pic/p>

  { }

  void function(int (*a)[3]) /pic/p>

  { }

  千万别写成这样:

  void function(int **a) /pic/p>

  { }

  究其原因,还是回到以前提过多次的数组与指针的结论:任何数组,都将被一律视为一个指向其首元素的指针。因此以下两行代码是等价的:

  function(a);

  function(&a[0]);

  对于二维数组 int a[2][3] 而言,其首元素就是一个 int [3] ,因此&a[0]就是一个指向 int [3] 的指针,其类型当然是 int (*)[3] 了。这样再来看上述的function两种正确定义,就不难理解了。

【C语言二维数组怎么写好】相关文章:

C语言二维数组02-14

c语言怎么定义一维数组和二维数组12-17

c语言中什么是二维数组02-19

C语言二维数组的定义和引用02-25

C语言二维数组知识点介绍11-11

C语言的数组与函数02-28

什么是C语言数组12-24

C语言数组教程02-28

C语言指针与二维数组资料详解(附示例代码)11-09