ノードのデータを更新できるリンクリストを作成しようとしていますが、何をしようとしても、Cはvoidポインターの値を更新することができません。に)。ここで私が持っているテストコードがあります:関数を介してポインタをvoidに変更するにはどうすればよいですか?
だけ出力void newData(void * d)
{
char data[] = "world";
d = &data;
}
int main()
{
char testData[] = "hello";
void * testPointer = &testData;
printf("TestData is %s\n", (char *)testPointer);
// Modify the data
newData(&testPointer);
printf("TestData is %s\n", (char *)testPointer);
}
::
TestData is hello
TestData is hello
私はここに明らかに何かが足りないのですか?私はまた、ポインタへのポインタを使用しようとしましたが、役に立たない。
引数の型が間違っている、それが空でなければなりません:
–または単にそれを 'newData(testPointer); 'と呼びますか? – John
'void * testPointer =&testData;'この演算子ではアドレス演算子は不要です。配列にポインタを割り当てると、配列のアドレスgetが割り当てられます。ですから、代わりに 'void * testPointer = testData;'を実行することができます。あなたがこれを行うことができるあなたのプログラムにも他のステートメントがあります。 – Mahesh