gpt4 book ai didi

c - 为什么强制转换在 C 中给出右值?

转载 作者:行者123 更新时间:2023-12-02 08:34:45 26 4
gpt4 key购买 nike

我有一个关于 lvaluervalue 的问题:

void * p;

typedef struct
{
int a;
int b;
} TypeA;

&(TypeA*)p; // here it complains lvalue required as unary '&' operand

为什么 (TypeA*)p 给出一个 rvaule?

最佳答案

p 是“指向 void 的指针”类型的对象;如果您将 p 中的值强制转换为“指向 TypeA 的指针”,您将不再拥有 “对象”:您只有一个 “值(value)”

“值”(如 42)没有地址。

/* wrong code; this does not work */
int *p = &42; /* values do not */
void *q = &(0xDEADBEEF); /* have addresses */

关于c - 为什么强制转换在 C 中给出右值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966243/

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