我有这个数组“r->phy_addr”定义如下:
int array [r->numpgs];
r->phy_addr= &array[0];
现在我想将数组的元素零传递给一个以“int”作为参数的函数:
add(int x){};
如果我喜欢这个
add(r->phy_addr[0]);
然后出现“无法将指针作为 int 传递”的错误
我该怎么做?
如果编译器抱怨r->phy_addr[0]beng 指针,则r->phy_addr必须具有指针到指针类型(int **很可能)。在这种情况下,您的问题甚至更早开始。这个
r->phy_addr = &array[0];
已经无效,因为您正在int *为int **对象赋值。编译器应该已经告诉你了。
换句话说,您的呼叫add不是问题。忘记调用add. 现在看那个电话还为时过早。您还有其他问题需要在此之前解决。
是什么r->phy_addr?它应该有int **类型吗?如果是这样,您为什么要按上面所示分配它?您为什么忽略由该无效分配触发的编译器诊断消息?
试试 add(*(r->phy_addr[0]));
应该可以
我怀疑 r->phy_addr 有int **类型。所以r->phy_addr[0]获取int *类型,然后编译器警告您参数应该是int类型,而不是int *类型。
将类型更改r->phy_addr为int *。
谢谢。
怎么样:
add(*(r->phy_addr[0]));
? 因为,显然,r->phy_addr[0]是一个指针。