C语言左值与右值详解
C语言 详解 右值
2023-06-13 09:11:55 时间
左值是用来指明一个对象的表达式。最简单的左值就是变量名称。左值(lvalue)之所以称为 左 (以首字母为 L,代表 left),是因为一个左值表示一个对象,它可以出现在赋值运算符(assignment operator)的左边,例如 左表达式=右表达式 。
其他表达式(那些表示一个值但不指明一个对象的),被类似地称为右值(rvalue)。右值是可以出现在赋值运算符右边而不是左边的表达式。例如,常量和算术表达式。
从一个左值中必定可以解析出对应对象的地址,除非该对象是位字段(bit-field)或者被声明为寄存器存储类。生成左值的运算符包括下标运算符(subscript operator)[]和间接运算符(indirection operator)*,如下表所示(如果 array 已被声明为数组,而 ptr 被声明为指针变量)。
对象可以被声明为常量。在这种情况下,该对象就不能位于赋值运算的左边,尽管它是左值,如下面的例子所示:
int a=1; const int b=2, *ptr= b=20; //错误:b被声明为const int *ptr=10; //错误:ptr被声明为const int的指针
在这个例子中,表达式 a、b、ptr 和 *ptr 都是左值。但是 b 和 *ptr 是常量左值。因为 ptr 被声明为指向 const int 的指针,不能使用它修改它所指向的对象。
赋值运算左边的操作数,以及任何自增或自减运算符(++ 和 )的操作数,不仅应该是左值,还应该是可修改的左值。可修改的左值,其类型不可以被声明为限定符 const,并且可修改的左值不能是数组类型。如果可修改的左值所表示的对象是结构或联合类型,那么它的元素都不可以被声明(不管是直接地或间接地)为具有限定符 const 的类型。
21585.html
相关文章
- C语言学习——指针精华(1)
- C语言学习——结构体_联合体_枚举用法直通[通俗易懂]
- C语言switch语句的用法详解_c语言switch语句例题
- C语言模拟银行家算法
- C语言基础 - 文件编程 —— 概述篇
- 蓝桥杯历届试题 国王的烦恼(并查集+快排)------C语言—菜鸟级
- C语言位运算符详解「建议收藏」
- 位运算--C语言版
- 【C语言进阶】——深入剖析数据在内存中的存储
- TIOBE 5月编程语言排行榜:Java和C语言正在被超越详解编程语言
- [C语言] 变量和数据类型和整数和字符详解编程语言
- C语言之形参和实参详解编程语言
- C语言之if和switch的分别详解编程语言
- 使用C语言调用Redis接口来提升性能(credis接口)
- C语言_结构体的4种定义初始化方式及案例详解编程语言
- do while循环,C语言do while循环详解
- 字符串查找函数,C语言字符串查找函数详解
- EOF宏,C语言EOF宏详解
- strspn和strcpn函数,C语言strspn和strcpn函数详解
- C语言求最大公约数(详解版)
- C语言与MySQL的互动之旅(c 与mysql交互)
- MySQL中使用C语言处理长连接的技巧(c mysql长连接问题)
- MySQL表选择从C语言中获取最佳策略(c mysql选择表)
- 学习C语言,掌握MySQL实例教程(c mysql实例教程)
- 数据库编程 学习C语言 Oracle 数据库编程之旅(c语言的oracle)
- 解决Oracle中C语言乱码问题(c oracle乱码问题)
- 关于C语言指针赋值的问题详解
- 基于C语言中段错误的问题详解
- C语言十进制转二进制代码实例
- C语言双向链表的表示与实现实例详解