gpt4 book ai didi

关于指针使用的说明

转载 作者:行者123 更新时间:2023-11-30 21:38:12 25 4
gpt4 key购买 nike

我对指针短语的确切含义有疑问。

我有以下方法:

myFunc(const void * p)
{
...
}

它正在被调用:

myStruct *st;
...
myFunc((char **)&st->arr);

我有使用指针的经验,但在这种情况下,我仍然迷失在所有这些指针和转换中。我可以得到有关此案例如何运作的准确解释吗?

谢谢

最佳答案

这似乎是质量很差的代码!也许并不危险,因为 const 出现在原型(prototype)中。

myFunc(const void * p) 接受指向任何内容的指针,而 const 应该意味着它不会触及它。

现在,st是指向myStruct的指针,因此st->arrarr的值member 和 &st->arrarr 成员的内存地址。假设arr是一个数组,st->arr值已经是一个指针。

所以,(char**)可能是&st->arr的正确类型,它是一个指向字符数组的指针。如果类型正确,则无需强制转换!

当您需要告诉编译器将您的数据作为另一个数据处理时,您可以进行强制转换。在这种情况下,这是有道理的 myFunc((const void *)&st->arr);

无论如何,在没有有关 myFunc 的更多信息的情况下,我相信程序员的真正意图是 myFunc((const void *) st->arr);

关于关于指针使用的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17649600/

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