Lew*_*wis 1 c pointers void void-pointers
我正在尝试创建一个链接列表,您可以在其中更新节点中的数据,但无论我尝试什么,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);
}
Run Code Online (Sandbox Code Playgroud)
哪个只是输出::
TestData is hello
TestData is hello
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗?我也尝试使用指针指针,但无济于事.
我想你需要
void newData(void ** d)
{
char data[] = "world";
*d = &data;
}
Run Code Online (Sandbox Code Playgroud)
但是,这有它自己的问题,因为"world"是堆栈本地的,并且从newData返回后将无效.