C语言 动态二维数组作为参数的问题

现在有一个函数a的声明如下:a(intn,longhpos[][2])我现在想调用a这个函数,但是作为参数的hpos的长度在分配的时候第一维的长度是动态的(这里的第一位的... 现在有一个函数a的声明如下:a(int n, long hpos[][2])
我现在想调用a这个函数,但是作为参数的hpos的长度在分配的时候第一维的长度是动态的(这里的第一位的长度就是n),所以想在外面先将hpos calloc出来后再使用,但是在外部使用如下代码:
long** hpos=NULL;
for(i=0;i<n;i++)
{//分配内存
}
a(n,hpos);
这样的调用编译通不过,说long**和long(*)[2]无法转换。想问下该怎么做才可以。求指点,先谢谢大家,解决加分,谢谢。
展开
 我来答
a4321559
2012-07-26 · TA获得超过521个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:286万
展开全部
楼上的回答应该还是同样问题 编译不过吧?

其实你完全可以这样定义a

a(int n, int m, long **hpos);

这样就解决啦
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-26
展开全部
如果第二维固定是2,可以考虑使用行指针做为参数

a(int n, long (*p)[2])
{
/*
*(*(p + i) + j) 取数组元素[i][j]
*/
}

a(n,hpos); /*直接调用就可以*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sirenblueb5
2012-07-26 · TA获得超过482个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:447万
展开全部
把hpos改定义为行指针——
int (*hpos)[2];
然后分配内存,只要分配一次——
hpos = calloc(2*n*sizeof(long));
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式