作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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;
}
我有这样的代码,但它不起作用。参数 as * 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
和 *hlist[]
完全相同。因此,将其中之一更改为另一个不会产生任何影响。
这是因为 C 具有“数组衰减”,即在大多数情况下,数组名称衰减为指向其第一个元素的指针。因此,无论您使用 **hlist
还是 *hlist[]
,整个数组都不会被复制。因此,在任何一种情况下都不能通过编写 foo(hlist);
来传递数组。
似乎您希望 hlist
是指向 hlist_t 的指针数组。如果是这样,请执行以下操作:
hlist_t *hlist[4];
关于c - 如何在 C 中将多个列表(hlist)作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612186/
我是一名优秀的程序员,十分优秀!