gpt4 book ai didi

c - 关于void指针的问题

转载 作者:行者123 更新时间:2023-11-30 20:48:43 24 4
gpt4 key购买 nike

我有两个关于 void 指针的问题;我们有:

void * foo=malloc(99) 
void **bar=(void**)malloc(99);

int i=1;
bar++;
*bar = foo;

1.上面等价于下面吗?

bar[i++] = foo;

如果是的话,这是意外的,因为 bar++; 向前移动双指针而不是单指针,这与非 void 类型不同。

2.为什么从 void * foo(); 返回 void** 可以?

例如:

 void * foo(){
void ** bar;
return bar;
}

最佳答案

1.Is the above equivalent to the following?

bar[i++] = foo;

If yes it's unexpected because bar++; moves the double pointer forward and not single pointer, which is different from non void types.

这很好,因为 bar 是一个指向指针数组的指针。 void* 的大小是已知的(它是指针的大小),因此您知道 void** 数组的下一个元素在哪里。

2.Why is it fine to return void** from a void * foo();?

因为void*是一个指向任何东西的指针。指向任何内容的指针就是指向任何内容的指针,因此 void** 可以隐式转换为 void*

关于c - 关于void指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31304132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com