数组名作为左值和右值的区别

摘要:
简而言之,数组名称的左侧值显示在赋值符号“=”的左侧,右侧值显示在右侧。此外,在C语言中引入了术语“可修改的左值”,这意味着赋值符号“=”左侧表示的地址上的内容必须是可修改的。

简单的说,就是数组名出现在赋值符号“=”左边的就是左值,出现的右边的就是右值。

举例: x = y ;

左值:在这个上下文环境中,编译器认为x的含义是x所代表的地址。当然,这个地址只有编译器知道咯。

右值:在这个上下文环境中,编译器认为y是y所代表的地址里面的内容。至于内容是什么,只有运行的时候,编译器才知道。

另外,C语言中引入了一个术语---“可修改的左值”,表示的是赋值符号“=”左边代表的地址上的内容是一定可以修改的。我们可以这么理解:只能对非只读的变量赋值。

进入正题--->

创建一个数组 :char a[10] ;

a作为右值,很多人估计也在学习的时候,估计会 把它作为 数组的地址,这是错误的!a作为右值时代表的意义和 &a[0]的意义是一样的,代表 数组首元素的首地址,而不是数组的地址。

注意:这里只是“当作”,并没有一个地方来存储这个地址。

上面说了a作为右值,我们清楚了其含义,那么a作为左值呢?

a不能作为左值!!!编译器会认为数组名作为左值代表的是a的首元素的首地址,但是这个地址开始的一块内存是一个整体,我们只能访问数组的某个元素,而无法把数组数组当做一个整体来进行访问。所以,我们可以把a[i]当左值,无法把a当左值。也可以这么理解:a的内部是由很多小部分组成,我们只能通过访问这些小部分来达到访问 a的目的。

免责声明:文章转载自《数组名作为左值和右值的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【面试】iOS 开发面试题(二)springBoot AOP环绕增强、自定义注解、log4j2、MDC下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Pycharm Debug功能详解

左键单击代码编辑区域中的行号以在调试模式下运行代码:单击左上角工具栏上的调试图标(bug图)。方法2:在调试模式下运行后,1。代码编辑区域中的蓝色条是当前程序运行的位置,即c=add(a)应该运行,但尚未运行。2.代码编辑区域中的深红色条是当前程序设置的所有断点行。3.左下方是程序堆栈,进入fun()函数。4.右下方是可变显示区域1。跳转到当前断点(在断点之...

Shell学习(五)Shell输出命令

“#-e启用转义echo”Itisatest“#输出:#正常!...

linux系统redhat7.9安装R

1.查看系统信息[root@localhosthome]#cat/etc/redhat-releaseRedHatEnterpriseLinuxServerrelease7.9(Maipo)[root@localhosthome]#lsb_release aLSB版本::core-4.1-amd64:core-4.1-noarch:ccxx-4.1-amd6...

rz上传文件及出错解决方案

原始链接:https://blog.csdn.net/yjk13703623757/article/details/87083997单独使用rz命令时有两个问题:上载中断和文件更改。解决方案是使用rz be进行上传,并在弹出对话框中删除“UploadfilesasASCII”之前的复选框。如果使用不带参数的rz命令上传一个大文件,则在上传过程中通常会中断。很...

windows下如何查看和修改MySQL的端口号

更改为要设置的新端口号。4.在桌面上找到“我的电脑”,右键单击并选择“管理”5.找到“服务和应用程序”并双击6.继续双击“服务”7.在列表中找到“MySQL”,右击并选择“重新启动”8.等待重新启动完成,然后按照我们刚才用来查看MySQL端口号的方法查看更改是否成功。如图所示,3396是我更改的端口号。...

Qt开发技术:QtCharts(一)QtCharts基本介绍以及图表框架详解

前话Qt自带的二维图标QCharts相关研发笔记。Qt图标概述Qt图表模块提供了一组易于使用的图表组件。更简单的解决方案是使用方便类QChartView而不是QChart在布局中显示图表。QChart载体类概述QChart类管理图表系列、图例和轴的图形表示。此外,使用QPolarChart类,可以将线、样条曲线、面积和散布序列表示为极坐标图。enumQCha...