打印

有些概念课堂上学不到——一个变量的2个特征。

[复制链接]
2995|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
刘前辈|  楼主 | 2012-2-28 18:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 刘前辈 于 2012-2-28 20:26 编辑

一个变量有2个特征(只有《C语言详解》和清华C语言教材上有相关内容。)

一个变量有2个基本特征:
1、变量所在单元的值。—— * 称为标量特征。可以用该单元的名字来标识和用 “=”直接赋值。
2、变量所在内存单元的地址。—— & 称为矢量特征。用指针间接寻址。

       标量举例:假定8051,DATA 存贮区有2个char 变量a,b 分别分配在40H和50H,那么标量可以用变量名进行赋值:  也即通过    a = b ;  把50H单元的内容拷贝到40H单元。
   
       ANSI C 第15条规定了:结构变量可以整体赋值。——以前的K&R  C 标准不允许结构拷贝。—— 但是结构名确实是标量,——它和数组名不一样(数组名是矢量,这是一种退化,所以数组不能整体赋值。)
       所以,如若有 2个相同类型结构变量 a , b , 就可以利用结构名来进行(标量)整体赋值。—— C 编译器将像对待上面例子中2个独立存贮单元 a,b一样处理结构变量赋值。  同样写成(struct)   
           a = b;

   所以下面老所长说结构变量也可能重叠,是很可笑的事情。——标量是一个整体。就好像说,40H单元和50H单元可能会出现重叠一样;——杞人忧天了。

#242楼 highgear
结构拷贝也会出现同样的问题,只要源缓冲区和目标缓冲区是重叠的。


老爷子早点退休算了,水平一年比一年差。2个结构拷贝会出现缓冲区重叠?哈哈,让人笑掉大牙!你以为那是数组啊?——老爷子若能像我那样举个例子给大家看看,我输你1,000元!——结构那叫封装!都像你似地闭上嘴还漏气?

       难怪讲习所会关大门,基本概念都讲不清:结构变量名是一个标量。什么叫标量?呵呵,玩了一辈子软件,如今年近60了,标量矢量还搞不清。讲了你也不懂:标量就是一个变量的第一特征,它标识一个变量的值。(指针矢量是一个变量的第二特征,它标识一个变量的地址)
2 个变量的值可以、可能重叠吗?老所长大牛重叠一个给俺开开眼?否则,只好输1,000元。

2个结构的缓存分配是静态的,在编译阶段就分配好了,根本不可能重叠!做编译器的人没你那么逊。——数组还可能程序溢出呢(编译器不能保证老爷子不干蠢事,把目标数组溢出到源数组去重叠覆盖。),结构能程序溢出吗?——结构名不是指针,老爷子玩一个试试?给咱见识见识。1,000银子随时伺候。
            什么还没搞清就来给别人讲课。

            “要给人一杯水,自己先要有一桶水。”

            自己先把自己装满再来吧。



、、、、

相关帖子

沙发
highgear| | 2012-2-28 22:01 | 只看该作者
总有些人自以为是:“俺不看书,照样天下第一。”“俺智商比爱因斯坦高……”这种人让别人看起来,有点精神不正常。
#235
举个例子:(与本题目具体无关)
char str[7]="aabbcc";
memcpy(str+2,str,4);

上面运行结果,源数组数据成了"aaaabb"! —— 灾难发生。
刘前辈绝对没有这个水平举这样“理解不到位”的“笑柄”例子,也只有所长这样自诩“天下第一”,“爱因斯坦第二”的让人讥笑的“超级高手”才有自己的“到位的理解”;——好像C/C++库函数就是highgear父子二人做的似地。

咱刘前辈大概只能在讲习所门口扫扫地,把 555时基电路玩的“天下第一转”,剩下的都是嘴上的本事了。

再抄点《函数库查询词典》上的内容,让美国人多给中国的所长留下点理解不到位的笑柄:

memcpy()函数说明:
   从源缓冲区中拷贝指定数目的字节到目标缓冲区中。如果源缓冲区和目标缓冲区是重叠的,则本函数的拷贝行为结果不确定。请使用memmove()来处理重叠缓冲区。
      要确保目标缓冲区的长度不小于源缓冲区。


struct A { char x[4]; };

结构复制:
*(struct A*) (str+2) = *(struct A*) str;
对比
memcpy(str+2,str,4);

使用特权

评论回复
板凳
ayb_ice| | 2012-2-29 08:46 | 只看该作者
又要PK了
建议highgear认输吧,你搞不赢他的

使用特权

评论回复
地板
程序匠人| | 2012-2-29 08:58 | 只看该作者
又开始了

使用特权

评论回复
5
huangqi412| | 2012-2-29 09:13 | 只看该作者
;P 二姨应该一年要发不少工资给lz吧。

使用特权

评论回复
6
lxyppc| | 2012-2-29 09:38 | 只看该作者
虽然人气贴都是楼主挑起的,但楼主其实是“捧哏”的

使用特权

评论回复
7
liang7143| | 2012-2-29 09:42 | 只看该作者
;P PK的意义在于 炒作
炒作的意义在于 名声大振

使用特权

评论回复
8
我来了111| | 2012-2-29 18:24 | 只看该作者
慢慢看

使用特权

评论回复
9
aihe| | 2012-2-29 18:41 | 只看该作者
最近真是冷清,呵呵

使用特权

评论回复
10
highgear| | 2012-3-1 22:19 | 只看该作者
顶 gozzz

使用特权

评论回复
11
香水城| | 2012-3-2 12:21 | 只看该作者
又开始了
程序匠人 发表于 2012-2-29 08:58


噢,原来早有过节

闪!

使用特权

评论回复
12
爱吃水煮鱼| | 2012-3-2 12:51 | 只看该作者
围观

使用特权

评论回复
13
DownCloud| | 2012-3-2 23:46 | 只看该作者
刘前辈我爱你啊!

使用特权

评论回复
14
Cortex-M0| | 2012-3-3 05:55 | 只看该作者
支持PK,  为二姨家加把火~~~

使用特权

评论回复
15
杨立业yly| | 2012-3-3 09:59 | 只看该作者
围观!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:做自己所热爱的,并热爱自己所做的。

24

主题

1038

帖子

4

粉丝