C语言二维数组指针 函数引用
假设主函数里inta[3][5]现在把这个二维数组用为fun函数实参而且是指针。为什么应该是int*[5]而不是int*[3]...
假设主函数里int a[3][5]
现在把这个二维数组用为fun 函数实参
而且是指针。为什么应该是int *[5]而不是int* [3] 展开
现在把这个二维数组用为fun 函数实参
而且是指针。为什么应该是int *[5]而不是int* [3] 展开
2个回答
展开全部
通俗的说如果把二维数组看做一个表格的话,前面[3]代表行,而[5]代表列,
而一个数组的代表的最基本含义就是一个行,
那么数组指针的的话,必然是指向数组即指向行,那么说回这个题目,
int *[5]代表,该指针指向的是一个列为5个元素组成的数组,那么int a[3][5]代表的是有3行的每行有5个元素组成的数组,该指针指向的数组的存储大小与这个2维数组的单行存储大小匹配,自然可以指向其中的某一行
而int*[3]只有3个元素无法与5个元素相匹配,自然不能指向其中的一行
而一个数组的代表的最基本含义就是一个行,
那么数组指针的的话,必然是指向数组即指向行,那么说回这个题目,
int *[5]代表,该指针指向的是一个列为5个元素组成的数组,那么int a[3][5]代表的是有3行的每行有5个元素组成的数组,该指针指向的数组的存储大小与这个2维数组的单行存储大小匹配,自然可以指向其中的某一行
而int*[3]只有3个元素无法与5个元素相匹配,自然不能指向其中的一行
展开全部
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]);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询