\u0026ch为啥不能作为左值

假设代码中有一个变量int i;那么当我们在说i的时候,我们在说什么?i可以代表:i被保存的那块内存;i被保存的那块内存里实际的内容。那么什么是左值?什么是右值?左值是储存在内存里、有地址的值,而右值更类似于我们平时所说的值。举一些例子来区分:1024,\u0026#39;a\u0026#39;他们是右值。他们是值而已,并没有存在某块内存中,所以不可以被赋值,如:1024=123; //这是啥意思呢,你要对1024做什么?而变量是左值:x=1; //此处的x并不代表x的值,而是放x的那块内存,把它设置成1。再来一个例子x=x+1;读作,把x(在右边表示值,内存中放的内容)的值加上1,然后储存在原来放x的地方(在左边表示内存)。还有你说的那个,你让a在0x101,那么\u0026amp;a就是数值0x101,你对着0x101赋值是什么意思?所以\u0026amp;取出来的地址是右值,因为没有存在内存里。当然,你可以声明一个变量来保存这个取出来的地址,比如char *p = \u0026amp;ch;那么这里p是左值因为它是一个变量,执行char *p会开辟一块内存来放p。虽然p的那块内存的值就是\u0026amp;ch,但是你就可以改它。还有,左值都是右值。不知道说明白没有...
■网友
那你先把它确定在101(瞎编的)地址上面啊。
■网友
题主看的是《C与指针》?怎么感觉看的是《聊斋志异》
■网友
\u0026ch为啥不能作为左值
【\u0026ch为啥不能作为左值】

■网友
\u0026amp;ch 是一个数值,是一个数,
■网友
地址是存储区里的编号一样,按顺序分来的,分配内存之后,把ch的值放在某个存储器里,然后你\u0026amp;ch就是这个地址值,它只是一个值,一个编号,一个类似1234的东西。只能说你把ch刚好放在这个地址上,而不是因为ch才去分配的地址。它不能像一个变量一样代表一个存储器,所以它当然不能作为左值也不能修改。只有可以代表存储器的东西才能作为左值,比如你可以让一个指针存储\u0026amp;ch,这样这个指针是可以修改的。
■网友
继续用心看,你这个问题问题很多。


    推荐阅读