c - 是否不允许对操作的左值进行类型转换?

标签 c pointers gcc

我有下面的代码,我正在做一个整数指针到 void 指针的类型转换,并尝试分配 char 地址。

void main()
{
   int *ptr;
   char a = 10;
   (void *)ptr = &a;
   printf("%d\n", *ptr);
}

我遇到了以下错误,无论如何我可以解决这个问题吗?

error: lvalue required as left operand of assignment
    (void *)ptr = &a;

最佳答案

对左值的转换是有效的,即 (void *)ptr 本身是有效的,但它不再是左值。这称为左值转换

修复,正如@Joachim 评论的那样:

ptr = (int *) &a;

关于c - 是否不允许对操作的左值进行类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30116881/

相关文章:

c - 在Assembly中打印多个值

c - SPARC 程序集,如何访问指向结构的 C 指针

c - 为什么 ASLR 似乎不起作用

c - Flash如何与dll文件通信

c - 为什么以下按位运算会返回意外结果?

c++ - 指针互转换与具有相同地址

c - 我的无符号短指针返回意外结果。为什么?

c - 如何从数组中打印出指针指向的值

objective-c - 如何在 Linux 中运行简单的 Objective-C

gcc - 与 glibc 的静态链接,无需调用 main