`
chong_zh
  • 浏览: 72350 次
  • 来自: 杭州
社区版块
存档分类
最新评论

左值、右值、可修改左值、不可修改左值

 
阅读更多
Assignment: l-values and r-values

Some languages use the idea of l-values and r-values. Lvalues are values that have addresses being programmatically accessible to the running program (e.g., via some address-of–operator like "&" in C/C++), meaning that they are variables or dereferenced references to a certain memory location. Rvalues can be lvalues (see below.) or non-lvalues—a term only used to distinguish from lvalues. Consider the C expression (4 + 9). When executed, the computer generates an integer value of 13, but because the program has not explicitly designated where in the computer this 13 is stored, the expression is an rvalue. On the other hand, if a C program declares a variable x and assigns the value of 13 to x, then the expression (x) has a value of 13 and is an lvalue.

In C, the term lvalue originally meant something that could be assigned to (coming from left-value, indicating it was on the left side of the assignment operator), but since 'const' was added to the language, this now is termed a 'modifiable lvalue'.由const关键字修饰的左值属于不可修改的左值,其值不可修改,
eg: 辨别常指针与常量的指针:
char * const p;
char const * p;
const char *p;
上述三个有什么区别?
char* const p; //p为只读指针。
char const *p;//(*p)值只读的指针。
const char *p; //和char const *p意思相同。

数组名是不可修改的左值
注意:有一样操作只能在指针里进行而无法在数组中进行,那就是修改它的值。数组名是不可修改的左值,它的值是不能改变的。
分享到:
评论

相关推荐

    c++的左值右值 i++与++i的区别.docx

    右值是被读取的值,不可以被修改。在 C++ 中,文字常量、变量的值、函数返回值等都是右值。 在 C++ 中,i++ 和 ++i 是两个不同的运算符,前者是后缀递增运算符,后者是前缀递增运算符。它们的区别在于赋值顺序和...

    左值与右值的引用

    这是关于C++左值与右值引用的课程视频,课程易于理解,可以很快掌握

    C++中的左值和右值

     这两个概念在C语言中比较容易理解:左值能放在赋值语句的左边,右值不能。但是当来到C++时,二者的理解比较复杂了(PS:有对象真是麻烦)  简单的归纳:  · 当一个对象被用作右值的时候,用的是对象的值...

    C语言指针以及区分左值和右值的技巧(整理)

    看了一下自己的资源,下载了很多,实在不好意思,整理一份发一下。 Android开发高效率的还是依靠NDK,所以C语言学习一下也是有必要的。Android内核还是Linux所以本分分类放在了Linux这里。其实我是想放到OS Android...

    左值和右值

    在深入探讨左值和右值的概念之前,我们首先需要理解它们在编程语言,尤其是C++中的基本定义与作用。左值(L-value)与右值(R-value)是C++中用于描述表达式特性的术语,它们对于理解变量、常量以及函数返回值的属性...

    cpp代码-左值 和 右值 ---- 左值引用(就是别名) 和 右值引用

    左值引用用`&`符号表示,可以用来绑定到左值,但不能绑定到右值。例如: ```cpp int x = 5; int& ref_x = x; // ref_x 是 x 的左值引用,可以用来别名引用 x ``` 右值引用也用`&`符号表示,但前面加一个`&&`,它只能...

    关于i++和++i以及左值,右值

    右值不具备可以被直接修改的存储地址,如`int b = a + 1;`中的`a + 1`是一个右值。 而i++和++i是C++和C语言中用于对变量进行自增操作的两种运算符。它们虽只有一字之差,但含义和用法却存在显著差异。具体来说,i++...

    左值,右值,引用,以及源代码

    左值,右值,引用,以及源代码

    浅谈C++左值引用和右值引用

    但是,右值引用不能直接绑定到左值,除非通过`std::move`函数,该函数可以将左值转换为对应的右值引用类型,如`int &&r6 = std::move(r2);`。 左值引用和右值引用的一个关键区别在于,左值引用通常表示对象的身份,...

    非常量引用的初始值必须为左值的问题

    这是因为非常量引用可以用来修改其绑定的对象,因此不允许绑定到常量左值或任何类型的右值。 - **示例**: ```cpp int i = 10; double &r = i; // 错误: 类型不匹配, 并且'i'是整型而非双精度浮点型 ``` 在这...

    31_c++中的左值引用与右值引用1

    右值(Right-Value)则通常是不可寻址且临时的,比如表达式的结果或者函数返回值。C++11引入了右值引用,以改善对右值尤其是临时对象的处理,从而提高程序效率。右值引用用`&&`表示,它可以绑定到右值,延长右值的...

    C++11中的左值引用和右值引用

    1.首先区分左值和右值  左值是表达式结束后依然存在的持久对象  右值是表达式结束时不再存在的临时对象  便捷方法:对表达式取地址,如果能,则为左值,否则为右值  举例:  int a = 10  int b = 20  ...

    C语言程序设计(第2版)-2期 拓展知识3-1 左值和右值.pdf

    C语言程序设计(第2版)-2期 拓展知识3-1 左值和右值.pdf 学习资料 复习资料 教学资源

    ASP+ACCESS二叉树左右值无限级分类,支持增,删,改,查,排序

    无限级分类通常使用左值右值法(也称为闭包表法),通过两个字段来记录每个节点的左右边界。新增节点时,可以在适当的位置插入新的左值和右值;删除节点时,需要更新受影响的节点的左值和右值;修改节点位置时,同样...

    深入理解C++中的左值引用和右值引用

    左值引用和右值引用是C++中非常重要的概念,它们在现代C++编程中扮演着核心角色。通过理解这两种引用类型,我们可以更有效地管理资源,提高程序的性能,并编写出更加灵活和强大的代码。移动语义和通用引用进一步扩展...

    为什么(i++)不能做左值,而(++i)可以

    左值是指可以出现在赋值语句左边的表达式,它引用了一个可识别的内存位置,而右值则是出现在赋值语句右边的表达式,代表一个值。左值通常可以取地址,因为它代表了一个具体的数据位置,而右值则是临时的,一般不可取...

    深入理解c++右值引用1

    在C++编程语言中,右值引用是一种特殊的引用类型,它是C++11引入的特性,目的是为了增强语言对右值的处理能力,尤其是优化对象的移动操作。...理解并正确使用左值、右值以及它们的引用是C++编程中不可或缺的知识点。

Global site tag (gtag.js) - Google Analytics