C语言函数调用二维数组,指针问题

我在main定义了一个a[10][10]想要定义函数在函数中对a二维数组中德数据进行处理,我定义的函数假设是这样deal(int**p),为什么是错误的做法??a不也是一... 我在main定义了一个 a[10][10] 想要定义函数在函数中对a二维数组中德数据进行处理,我定义的函数假设是这样deal(int **p),为什么是错误的做法??a不也是一个地址等价于二维指针吗; 但是deal((*p)[10])却是正确的?求解释,小弟痛苦中 展开
 我来答
█╬卍╬█
推荐于2016-01-19 · TA获得超过162个赞
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:167万
展开全部
正如楼下所言 int **p ,定义的p是一个指向int*型的指针
int (*p)[10]是一个指向数组的指针 数组长度为10

假如定义成 deal(int **p),传参数时要加强制类型转换: deal((int**)a);
并且使用p时不能用下标,p[2][3]是错误的,因为不知道p指向的int*型的长度,无法编译成*(p+2*10+3)
必须自己写成*(p+2*10+3)来调用

假如定义成 deal(int (*p)[10])就不一样了,编译器就能知道p是一个指向长度为10的数组的指针
那么p[2][3]就能编译成*(p+2*10+3)了

总之,C语言是很灵活的,不同的定义方式配上不同的用法,都是能得到正确的结果的

不知道这么说楼主明白了没?

同样的还有多维数组对多维指针的问题,楼主可以自己类推一下
ssgo66
2012-12-13 · TA获得超过143个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:128万
展开全部
int **p是指向int*的指针,int(*p)[10] 是指向数组的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式