1、左值是一个表达式,可以读取或者修改它所引用的对象。对象是一块内存区域,可以读取或者修改它的值。
2、左值也可以是只读。
3、能放到等号左边(对其赋值)的一定是左值,但并不是所有的左值都可以放到等号左边(对其赋值)。
4、左值可以是不完整类型但不能是void类型
5、除了字符串字面常量外,其他任何结果为数组类型的表达式均不可以作为左值。
1、左值是一个表达式,可以读取或者修改它所引用的对象。对象是一块内存区域,可以读取或者修改它的值。
2、左值也可以是只读。
3、能放到等号左边(对其赋值)的一定是左值,但并不是所有的左值都可以放到等号左边(对其赋值)。
4、左值可以是不完整类型但不能是void类型
5、除了字符串字面常量外,其他任何结果为数组类型的表达式均不可以作为左值。
[e01]
学习了,小D在学习中总是会用,到不懂其概念,比如栈、左值什么的
回复 bugsonglinux:随着学习的深入,基础概念越来越重要,不然你学到一半发现,原先自己理解的东西居然都是另外一个样子。。。
回复 davelv:嗯,我会注意基础的
如果左值可以是只读,那么怎么改变其值呢?[e07]
能讲的更细致吗?谢谢!
回复 gaosentao:只读的左值不能改变其值。例如 const int a=0; a是一个左值,你在接下来的代码中不能给a赋值。
左值可以是不完整类型但不能是void类型
=============
这个怎么讲?
能否给个例子
回复 KBTiller:例如声明一个长度未知的数组 int array[];
然后你可以使用单目运算符&对array进行运算。这个运算符要求后面必须是左值或者函数,很明显array不是函数,是一个不完全类型左值。
回复 davelv:
“声明”的外部变量?
回复 KBTiller:恩,声明到头文件中的话可以用c99标准正常编译,没有警告。声明到源代码文件的全局部分也可以,但是会有警告。