2

我有这个数组“r->phy_addr”定义如下:

int array [r->numpgs];
r->phy_addr= &array[0];

现在我想将数组的元素零传递给一个以“int”作为参数的函数:

add(int x){};

如果我喜欢这个

add(r->phy_addr[0]);

然后出现“无法将指针作为 int 传递”的错误

我该怎么做?

4

4 回答 4

3

如果编译器抱怨r->phy_addr[0]beng 指针,则r->phy_addr必须具有指针到指针类型(int **很可能)。在这种情况下,您的问题甚至更早开始。这个

r->phy_addr = &array[0];

已经无效,因为您正在int *int **对象赋值。编译器应该已经告诉你了。

换句话说,您的呼叫add不是问题。忘记调用add. 现在看那个电话还为时过早。您还有其他问题需要在此之前解决。

是什么r->phy_addr?它应该有int **类型吗?如果是这样,您为什么要按上面所示分配它?您为什么忽略由该无效分配触发的编译器诊断消息?

于 2012-12-05T00:47:37.727 回答
2

试试 add(*(r->phy_addr[0])); 应该可以

于 2012-12-05T01:56:04.200 回答
1

我怀疑 r->phy_addr 有int **类型。所以r->phy_addr[0]获取int *类型,然后编译器警告您参数应该是int类型,而不是int *类型。

将类型更改r->phy_addrint *

谢谢。

于 2012-12-05T00:42:28.110 回答
0

怎么样:

add(*(r->phy_addr[0]));

? 因为,显然r->phy_addr[0]是一个指针。

于 2012-12-05T00:24:26.423 回答