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]无法转换。想问下该怎么做才可以。求指点,先谢谢大家,解决加分,谢谢。 展开
我现在想调用a这个函数,但是作为参数的hpos的长度在分配的时候第一维的长度是动态的(这里的第一位的长度就是n),所以想在外面先将hpos calloc出来后再使用,但是在外部使用如下代码:
long** hpos=NULL;
for(i=0;i<n;i++)
{//分配内存
}
a(n,hpos);
这样的调用编译通不过,说long**和long(*)[2]无法转换。想问下该怎么做才可以。求指点,先谢谢大家,解决加分,谢谢。 展开
展开全部
楼上的回答应该还是同样问题 编译不过吧?
其实你完全可以这样定义a
a(int n, int m, long **hpos);
这样就解决啦
其实你完全可以这样定义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); /*直接调用就可以*/
a(int n, long (*p)[2])
{
/*
*(*(p + i) + j) 取数组元素[i][j]
*/
}
a(n,hpos); /*直接调用就可以*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把hpos改定义为行指针——
int (*hpos)[2];
然后分配内存,只要分配一次——
hpos = calloc(2*n*sizeof(long));
int (*hpos)[2];
然后分配内存,只要分配一次——
hpos = calloc(2*n*sizeof(long));
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询