我有这个数组“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]
是一个指针。