C语言二维数组指针 函数引用

假设主函数里inta[3][5]现在把这个二维数组用为fun函数实参而且是指针。为什么应该是int*[5]而不是int*[3]... 假设主函数里int a[3][5]
现在把这个二维数组用为fun 函数实参

而且是指针。为什么应该是int *[5]而不是int* [3]
展开
 我来答
GHOUL荷兰人
2015-03-01 · TA获得超过1135个赞
知道小有建树答主
回答量:354
采纳率:100%
帮助的人:379万
展开全部
通俗的说如果把二维数组看做一个表格的话,前面[3]代表行,而[5]代表列,
而一个数组的代表的最基本含义就是一个行,
那么数组指针的的话,必然是指向数组即指向行,那么说回这个题目,
int *[5]代表,该指针指向的是一个列为5个元素组成的数组,那么int a[3][5]代表的是有3行的每行有5个元素组成的数组,该指针指向的数组的存储大小与这个2维数组的单行存储大小匹配,自然可以指向其中的某一行
而int*[3]只有3个元素无法与5个元素相匹配,自然不能指向其中的一行
porker2008
推荐于2016-05-12 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
int a[3][5];


这时候a的类型是

int [][5]

或者是

int(*)[5]

 

代表a是一个指针,指向的是一个大小为5的一维数组

追问
为什么不是int (*)[3]
追答

指针总是先抽离第一维的

比如说

int a[3][5][7][9];

那么参数表应该是

void fun(int a[][5][7][9]);

或者

void fun(int (*a)[5][7][9]);


如果C++的话,还可以用

void fun(int (&a)[3][5][7][9]);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式