心 空

  • Tools
Ricky Hao
  1. 首页
  2. C
  3. 正文

C 二维数组的传参方法

15 9 月, 2015 1911点热度 0人点赞 0条评论

对于普通的一维数组,我们只需要这样声明一个函数即可:

void fun1(int *ar);
void fun2(int ar[]);

但是,对于二维数组,函数声明就会比较复杂,常见的有:

void fun3(int ar[][10]);    //这里的10指二维数组第二维的大小,必填,且必须为常量
void fun4(int *ar[10]);

这两种声明方法最为普遍,而且,使用起来也方便。可以直接在函数体内使用数组。
但是,有个问题就是,以上两种方法必须要提前确定传入的二维数组第二维的大小。然而在很多情况,我们是不能确定的。那么,该怎么办呢?

void fun5(int **ar,int lsize);

这是一种声明方法,本意是传递一个指针的指针变量,但是我们用来传递二维数组。
对于这种方法,在函数体内使用起来比较麻烦:

*((int *)ar+i*lsize+j)        //这是这种方法的调用方法,相当于ar[i][j]

是不是略复杂?不好理解?没事,现在就来说说。
首先,我们是要以指针形式来调用,所以不能使用数组形式。
其次,我们需要用(int *)强制类型转换,才能读取数据。而后面的lsize的意思就是列数(也可以理解为第一维的个数)。
这样,就可以做到任意二维数组的传参。
Warning!注意不能越界!!!

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: C
最后更新:15 9 月, 2015

Ricky

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

COPYRIGHT © 2025 心 空. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang