gpt4 book ai didi

C 指针 : Do these have the same functionality?

转载 作者:行者123 更新时间:2023-11-30 18:23:07 25 4
gpt4 key购买 nike

假设您有一个“void *a”和“void *ptr”,它们指向代码中定义的不同地址。然后我想知道这两行是否等效且功能相同?

    *((unsigned **)((char*)ptr+4)) = a;

    *((unsigned *)((char*)ptr+4)) = a;

第二个抛出警告“赋值从指针生成整数而不进行强制转换”

另外,这样做是否也和上面一样?:

    *((char*)ptr+4) = a;

最佳答案

这些并不等同。 #1 将 (char*)ptr+4 解析为指向无符号 (*unsigned) 的指针,而 #2 将其解析为 unsigned

a 是一个 void 指针,因此它可以转换为 *unsigned,但不能转换为 unsigned (隐式),这就是为什么你收到警告。

#3 将其解析为 char,这也会产生警告。

关于C 指针 : Do these have the same functionality?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7803609/

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