二维数组使用指针变量做函数参数是什么意思? 在什么情况下,函数参数才使用带指针的二维数组?

提交... 提交 展开
 我来答
自我编程
2018-05-25 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,行数可以指定也可以不指定。因为函数调用时传递的是一个指针,它指向由行向量够成的一维数组。

所以如果定义一个函数,参数二维数组,那么至少要指定列数,比如:

void p (int a[2][3])//正确
void p (int a[][3])//正确
void p (int a[][])//错误
void p (int a[2][])//错误

那么如果你想要用指针来做参数传递二维数组,那你需要定义一个指向数组(大小等于二维数组列数)的指针,比如:

void p (int (*a)[3])//正确

注意:要加括号,如果写int *a[3],就只是一维指针数组

我写了个简单案例:

#include <stdio.h>
void p(char (*num)[4])
{

    printf("%s\n",num[0]);
    printf("%s\n",num[1]);
}
void p2(char num[][4])
{

    printf("%s\n",num[0]);
    printf("%s\n",num[1]);
}
int main()
{
    char num[2][4]={"abc","efg"};
    p(num);
    p2(num);
    return 0;
}
老猴子不会胖
2018-05-25 · TA获得超过267个赞
知道小有建树答主
回答量:286
采纳率:81%
帮助的人:58.3万
展开全部
你有一个二维数组a[8][8],你想对这64组数进行处理,均-1.
用函数怎么实现?
实参a[0][0],a[0][1],a[0][2].......88个实参?形参也是88个?只改了形参,实参没影响?
这时,只需要把二维数组的首地址指针当作参数,函数中形参指针一项项移动是不是很好?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式