0

こんにちは、関数へのポインターに配列を渡そうとしています。2通りやってみました。最初に行った方法は *array を関数に渡すことでしたが、その後、以下のエラー メッセージが表示されます。そこで間違いに気づき、配列に変更しました。しかし、それは私に考えさせました、なぜエラーは二重ポインタを期待していると言っているのですか? エラーは今私を少し混乱させます。誰か説明してくれませんか。ありがとう。

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 *’
4

1 に答える 1

1

あなたが持っている

struct node *array[10]={NULL};

タイプstruct node *[](別名、struct node **)です。

add期待するタイプです。

それを (で) 逆参照すると*array、型は のプロトタイプと一致しなくなりますadd

于 2013-09-17T02:11:38.197 に答える