| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 393 人关注过本帖
标题:有关左值和右值,我的一些看法,可能不对,希望大神们指正!
只看楼主 加入收藏
赤血之魂
Rank: 2
等 级:论坛游民
帖 子:109
专家分:86
注 册:2012-3-22
结帖率:55.56%
收藏
 问题点数:0 回复次数:0 
有关左值和右值,我的一些看法,可能不对,希望大神们指正!
    在现在很多书籍上都会看到有关左值和右值的一些观点, 但是真正能够理解其含义的好像很少。而且这些书籍上的说明都是以举例子的方式来说明其概念的(至少我看见的书籍是这样的)。这样就没有一个值得推敲的理论性的概念。根据个人的理解有如下的不成熟的概念,希望有识之士不要笑话(毕竟论坛这种东西是大家一起讨论的地方,我只是抛砖引玉。)
    一个赋值语句左边的东西是左值,右边的东西是右值(这是很多书籍上的解释比如《C和指针》)。但是等号左边的东西究竟是什么?等号右边的东西究竟是什么?要说明这个问题,先要知道一个变量的组成。变量是一段有名字的连续存储空间。在源代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。 变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。根据老谭的那本书上面所说的(很多人认为他的这本书太初级了,但是作为入门书来说,写的确实不错。而且很多高深的理论都是基于最最初级的理论升华的。)一个变量要有三部分:名字,特定属性,存储单元。“名字”很好理解,“特定属性”就是变量存放的值,“存储单元”就是存放值的那个空间。空间是有地址的,那么地址是什么?我们的内存是一个一个的小格子(通俗一下哈),它们是连续的,如果cpu想找到某一个内存单元时就要从头开始查找,那么这个内存单元必须要有一个编号,这个编号就是地址。地址和变量的名称是不一样的(这里没有说函数,而是说变量,函数的地址和函数名称是一样的)。那么一个赋值语句究竟是怎样的呢?
赋值语句的一般格式是:变量名=表达式 其中"="为赋值号。表达式是由文本、常数、变量、属性、数组元素、其他表达式或函数调用的任意组合所构成。右面表达式一定要有具体的数值的。
    常见的赋值语句有以下几种形式:
  (1)a = 3;{赋予变量常数值}
  (2)b = a + 1;{将含有其它变量的表达式赋予变量}
  (3)N = N...
    通俗的讲:赋值的过程就是把一个变量名下的内存单元注入一个数值的过程。
    所以, 左值就是变量名,而右值是一个带有具体数值的表达式。

    下面的一段代码:

    int i;
    int a = 12;
    int *pi;
    pi = &i;
    *(pi++) = a;//该语句对吗?换句话说:*(pi++)可以作为左值吗?

    那么左面括号内的pi++的意义是什么呢?pi = pi + (int *)1;



搜索更多相关主题的帖子: 笑话 而且 书籍 
2012-11-03 11:03
快速回复:有关左值和右值,我的一些看法,可能不对,希望大神们指正!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015750 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved