【发布时间】:2011-06-23 16:57:18
【问题描述】:
我正在尝试创建一个链表,您可以在其中更新节点中的数据,但无论我尝试什么,C 似乎都不允许我更新 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
我在这里遗漏了什么明显的东西吗?我也尝试过使用指向指针的指针,但无济于事。
【问题讨论】:
-
参数类型错误,应该是void**。
-
或者直接称它为`newData(testPointer);'?
-
` void * testPointer = &testData;` 此语句中不需要地址运算符。当您将数组分配给指针时,会分配数组的地址。因此,您可以改为
void * testPointer = testData;。您的程序中还有其他语句可以执行此操作。
标签: c pointers void void-pointers