C 传递指针数组并接收错误消息

C 传递指针数组并接收错误消息,c,arrays,function,pointers,C,Arrays,Function,Pointers,嗨,我正在尝试将数组传递给指向函数的指针。我试过两种方法。我做的第一个方法是将*数组传递到函数中,但随后我得到下面的错误消息。所以我意识到了错误,把它改成了数组。但这让我想,为什么错误会说需要一个双指针?这个错误现在让我有点困惑。有人能解释一下吗。谢谢 add(struct node *arrayy[],int value) { struct node *nodey = (struct node *)malloc(sizeof(struct node)); nodey->x=value;

嗨,我正在尝试将数组传递给指向函数的指针。我试过两种方法。我做的第一个方法是将*数组传递到函数中,但随后我得到下面的错误消息。所以我意识到了错误,把它改成了数组。但这让我想,为什么错误会说需要一个双指针?这个错误现在让我有点困惑。有人能解释一下吗。谢谢

add(struct node *arrayy[],int value)
{
struct node *nodey = (struct node *)malloc(sizeof(struct node));
nodey->x=value;

if(arrayy[value]==NULL)
{
printf("I am not pointing to something...now I am hehehe\n");
 arrayy[value]=nodey;
}
else
{
printf("I already have a head..now my link is pointing at something\n");
arrayy[value]->link=nodey;
}   
}

struct node *array[10]={NULL};
add(*array,4);
add(array,4);
错误消息

note: expected ‘struct node **’ but argument is of type ‘struct node *’
你有

struct node *array[10]={NULL};
类型为
struct node*[]
(也称为
struct node**

这是
add
所期望的类型


如果取消引用(使用
*数组
),您的类型将不再匹配
添加

的原型,这是哪一行?倒数第二名?这可能是因为您正在解引用指针数组的第一个元素。add(*array,4)调用错误消息我只是想确定原因(aka,struct node**)。这是因为在我的例子中,我有一个指针数组。数组的工作方式是指向数组的第一个索引。因此,如果我有指向数组的第一个索引的东西,那么它是一个双指针,因为第一个索引已经是一个指针了。是这样吗?@user68212-我认为数组“指向”它的内容。所以对于一个标准数组,比如说
int-thingy[]
,我有一个
int*
,我可以使用特殊的数组符号
thingy[2]
来解引用它,得到一个
int
。在本例中,您有一个指针数组,因此数组变量是一个
struct节点**
,当您取消引用它(例如,获取内容)时,您会得到一个
struct节点*
(其内容的类型)