首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

错误:表达式不可赋值(赋值给C指针的一部分)

错误:表达式不可赋值(赋值给C指针的一部分)

这个错误是由于在C语言中,尝试将值赋给一个表达式的一部分,特别是指针的一部分,导致的。在C语言中,指针是用来存储内存地址的变量,而不是存储具体的值。因此,不能将值直接赋给指针的一部分。

要解决这个错误,需要确保赋值操作的目标是一个可修改的变量,而不是一个表达式的一部分。例如,以下代码会导致这个错误:

代码语言:txt
复制
int* ptr = (int*)malloc(sizeof(int));
*(ptr + 1) = 10; // 错误: 表达式不可赋值(赋值给指针的一部分)

在上面的代码中,(ptr + 1) 是一个表达式的一部分,它表示指针 ptr 向后移动一个 int 的大小。然而,这个表达式并不是一个可修改的变量,因此无法将值赋给它。

要修复这个错误,可以将赋值操作改为赋值给指针指向的变量,而不是指针的一部分。例如:

代码语言:txt
复制
int* ptr = (int*)malloc(sizeof(int));
*ptr = 10; // 正确: 将值赋给指针指向的变量

在上面的代码中,*ptr 表示指针 ptr 指向的变量,可以将值赋给它。

总结起来,错误"表达式不可赋值(赋值给C指针的一部分)"是由于尝试将值赋给一个表达式的一部分,特别是指针的一部分,导致的。要解决这个错误,需要确保赋值操作的目标是一个可修改的变量,而不是一个表达式的一部分。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 萌新学习C++容易漏掉的知识点,看看你中招了没有(一)

    很多人,包括我,看书,看完一章怎么怎么的,然后不管是作业,还是考试出现这一章的内容,总有些地方跟我们脑袋里面理解的不一样,自己明明学习过,但机器给出的答案和自己的完全相反,或者完全不正确,这就是为什么书读百遍,其义自见,可能夸张了,不知道你们是怎样的,一本书多读,确实能带给我不同的知识,这也是我为什么想起来写总结,我加了一个群,看到萌新们问的问题大多是他们看书漏掉的知识,这些人一定是只看了一遍或者没看,他们的程序刚好需要那么一点小小的知识去解决,可是他们不知道这一点小小的知识。        为什么会漏掉知识,我个人认为是这样的,最起码我是,比如这一章讲for,一看语法,我去,就怎么简单?上机一敲,啪啦啪啦啪啦,循环正确,嗯,for循环我学会了,然后沉浸在自我喜悦中顺利进入了下一章,应该就是这样吧? 哈哈,然后后期写复杂程序的时候就出了问题,于是再次翻开了那久违的for循环。(手动狗头)好了,好了,下面的总结可能不是一块知识点的,而是我目前以来感觉会漏掉的知识点,有可能是提高程序效率的,为了查找方便,我都列了标题,或许我的整篇文章只有一处帮到了你,那么也是有意义的,下面我们进入正题。

    01
    领券