| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2293 人关注过本帖
标题:[休闲][转载]一定要看哦
只看楼主 加入收藏
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
不好意思,刚才搞错了.看下面的:
Array subscripting :
One of the expressions shall have type ‘‘pointer to object type’’, the other expression shall have integer type, and the result has type ‘‘type’’.

来个个形式化定义:
如果a的值是地址(pointer to object ),b为enumeration或integral类型,那么a[b]和b[a]都等价于*(a+sizeof(*a)*b).

a和b哪个是pointer to object type and pointer to what type 哪个是integer type编译器知道.

PS: C定义字符串常量类型为char *

[此贴子已经被作者于2007-6-18 2:21:26编辑过]

2007-06-18 01:55
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 
a+sizeof(TypeB)*b这个从地址角度解释,解释得不错,但是现在从数组角度解释啊。

2007-06-18 02:08
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 

很复杂哦,to:百年不亮你只是从字面解释,但是没有真正理解


2007-06-18 02:28
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 

TO:无玩过界

再看一下我21楼的回复.

数组是什么? 在你声明一个数组时编译器分配你声明长度的内存空间,而声明指针只是分配4字节(vc中)用来存指针的值.分配之后你就可以把数组名当作指针.因为数组名是数组首元素地址,指针的值也是一个地址,所以分配之后数组名和指针的区别只是你不能改变数组名的值,指针是存地址的变量可以改变,区别仅次而已.

所以说从地址角度解释就行了,不需从数组角度解释

2007-06-18 02:34
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
再次强调我上面说过的一句:下标运算符就是实现地址加偏移寻址

如果你不能把我上面说过的全部看明白,说明你没有掌握C的精华,基础知识不扎实.谈论基础知识的帖子是我不愿意回的,因为随便找本教材都有.

去把c primer plus找来看看,如果都懂就看 c专家编程和c陷阱与缺陷. 如果学一点汇编就可以更好的理解c
2007-06-18 02:46
twsgl
Rank: 1
等 级:新手上路
帖 子:136
专家分:5
注 册:2007-6-15
收藏
得分:0 

for()...........?
我的电脑怎么不能正常的运行?
是不是上面的有问题

2007-06-18 06:58
yinlenc
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2007-5-17
收藏
得分:0 
++字符;//也可以执行字符加1吗?

2007-06-18 08:02
wldu
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-30
收藏
得分:0 
good!!!
2007-06-18 11:28
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 
to:百年不亮
举一个例子,就好似一个画家不需要懂得手里笔如何制作,即是材料怎样,制作标准又如何,这些。只需要懂得怎样使用它来发挥他的才华,而怎样发挥刬画才能是他所需要知道。你话是不是,这支笔同画家没有关系吗,当然不是,画家没有笔怎样刬画,这个你可以理解吧,我之所以这样说,我想你明白我们为什么选择C语言和其它高级语言,而不去选择汇编呢,这个你会知道。我们是追求简单,复杂你又不会使用很好,是不是。是不是好应该从数组角度解释一下,毕竟你不是说你深刻理解下标运算符嘛,但是你上面所说不是我想要的,如果我以上那些话不很好理解,当我说费话,可以叫版主删此贴。

2007-06-18 12:31
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 

为什么我说的你就是不明白呢? 难道我没有说清楚?

编译器看到a[b]这种表达式,就会去检查a,b中哪个的值是地址,哪个是integer,然后用那个地址加上integer乘步长,这里无论是数组还是指针的值都是地址,编译器取出地址进行寻址, 在这里是不区分数组还是指针的,你说从数组角度解释是什么意思,这二者处理起来都是一样的,你有没有理解我17,21,24,25楼的回复? 你完全看懂后再回帖行不?

我不想就这个问题再回帖了,因为该说的我在上面17,21,24,25楼说清楚了,这个帖子的内容上面都说了,如果你还不明白,加我QQ:344564458

2007-06-18 12:46
快速回复:[休闲][转载]一定要看哦
数据加载中...
 
   



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

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