c语言二维数组

本文介绍了C语言中在函数中传递二维数组的三种常见方法:1) 形参给出第二维长度;2) 形参声明为指向数组的指针;3) 形参声明为指针的指针。特别强调了动态数组情况下使用void func(int **a)或int func(int *a[])的处理方式,并提醒了int *a[]与int (*a)[]的声明区别。
摘要由CSDN通过智能技术生成

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年的老程序员࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值