gpt4 book ai didi

c - 指针/地址类型转换

转载 作者:太空狗 更新时间:2023-10-29 16:35:09 25 4
gpt4 key购买 nike

我有以下变量:

char *p;
int l=65;

为什么下面的转换会失败?

(int *)p=&l;

和:

p=&((char) l);

最佳答案

类型转换的结果总是右值。无法分配右值,这就是您的第一个表达式无法编译的原因。无法获取右值地址,这就是为什么您的第二个表达式无法编译的原因。

为了执行正确的类型转换,您必须按如下方式进行

p = (char *) &l;

这是执行您在第二个表达式中尝试执行的操作的正确方法。它将 int * 指针转换为 char * 类型。

您的第一个表情无法修复。你可以做

*(int **) &p = &l;  

但它最终所做的并不是真正的转换,而是重新解释 char * 指针占用的内存为 int * 指针。这是一种丑陋的非法黑客行为,在大多数情况下几乎没有实用值(value)。

关于c - 指针/地址类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2733960/

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