c语言二维数组

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

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

例如:

#include <stdio.h>
void func(int n,  int a[][size])
{

  /* access array */

  a[i][j];

}

void main()
{

  int a[10][10];

  func(10, a);

}

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

例如:

#include <stdio.h>
void func(int n, int (*a)[size])
{
  a[i][j]; /* right */
}

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

例如:

#include <stdio.h>
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)[]的区别,前者声明指向数组的指针,后者声明指向特定长度的数组的指针。

posted @ 2011-10-06 10:31  御剑逍遥  阅读(261)  评论(0编辑  收藏  举报