zoukankan      html  css  js  c++  java
  • 数组左值和右值问题

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

    例如

                     x = y ;

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

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

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

    例如

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

    a作为右值,很多人估计也在学习的时候,估计会 把它作为 数组的地址,这是错误的!a作为右值时代表的意义和 &a[0]的意义是一样的,代表 数组首元素的首地址,而不是数组的地址。
    注意:这里只是“当作”,并没有一个地方来存储这个地址。
    a不能作为左值!!编译器会认为数组名作为左值代表的是a的首元素的首地址,但是这个地址开始的一块内存是一个整体,我们只能访问数组的某个元素,而无法把数组数组当做一个整体来进行访问。所以,我们可以把a[i]当左值,无法把a当左值。也可以这么理解:a的内部是由很多小部分组成,我们只能通过访问这些小部分来达到访问 a的目的。
  • 相关阅读:
    Python3 调用 Ansible2.x API
    Django——form组件和ModelForm
    Python super().__init__()测试及理解
    ORACLE迁移记录
    CentOS7安装zabbix5.0
    ORACLE LINUX 7.7 安装ORACLE 11.2.0.4.0 RAC
    Spring
    【Git】clone项目&push项目没反应,Cloning into...没下载
    样式不显示,静态资源路径错误
    日常Java练习题
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/6148279.html
Copyright © 2011-2022 走看看