【发布时间】:2016-08-05 08:42:36
【问题描述】:
hlist_t hlist[4];
int hlist_init (hlist_t **hlist) {
int i;
for (i = 0; i < 4 ; i++) {
INIT_HLIST_HEAD ( hlist [i]);
}
return 1;
}
int main () {
hlist_init (&hlist);
return 0;
}
我有这样的代码,但它不起作用。 作为 * hlist[] 的参数也不起作用。 我应该如何处理? **hlist 和 *hlist[] 有何不同?
下面是代码的错误信息。 /media/hdd1/tcn/lbtest/main.c:20:5:警告:从不兼容的指针类型传递“hlist_init”的参数 1 [默认启用] /media/hdd1/tcn/lbtest/main.c:6:5:注意:预期为“struct hlist_t **”,但参数类型为“struct hlist_t (*)[4]”
【问题讨论】:
-
怎么“不起作用”,错误是什么,详情?
-
hlist_t **hlist是指向hlist_t的指针,hlist_t *hlist[]是指向hlist_t的指针数组的未识别长度。它们作为函数参数没有区别,因为函数参数中的数组声明将被转换为指向其元素的指针。 -
在函数的参数列表上下文中
hlist_t ** hlist和hlist_t * hlist[]是等价的。 -
我添加了一些代码,这是错误消息!谢谢您的帮助! @MikeCAT
标签: c arguments double-pointer