免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: unistd
打印 上一主题 下一主题

严重声明:C语言中不存在数组的类型!它仅仅是一个概念! [复制链接]

论坛徽章:
0
151 [报告]
发表于 2009-12-25 16:27 |只看该作者
怎么可能

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
152 [报告]
发表于 2009-12-25 18:43 |只看该作者
1
0
1
0
0
0

论坛徽章:
0
153 [报告]
发表于 2009-12-27 23:39 |只看该作者
楼主说:
【数组名仅仅是一个指针而已,它的类型为数组的元素类型的指针,,只是通常这个指针指向第一个元素,而且为常量而已!
对编译器来说,任何类型的指针,仅仅是指向的内存大小不同,其它都按照相同的对待! 所以数组名减一,就好比一个指针减一效果一样。】

不错,数组名也是一个指针,但是此指针非彼指针。就像有人叫“王明”,历史上也有个人叫“王明”(如1927年那个),他们的本质都是人,但是你不能说这两个人是同一个人,至少所代表的都不同。

举个例子:
    int array[3][3];
      int  *p;
      若按照楼主的说法,array是int类型的指针,P也是,


那为什么p=array是错误的呢?
所以,数组名肯定不能单单理解为指针的,那本著名的《Pointers On C》也有此论述。

论坛徽章:
0
154 [报告]
发表于 2009-12-28 09:19 |只看该作者

LZ是一个自以为是的家伙

LZ是不是觉得自己的见解很高深啊?看上去只是懂点基础而已,刚学了<计算机组成原理>?

按你的说法可以得出,所有的高级语言都没有数组。

你想想:C存活了多少年?这些年中,比你牛的人有多少?

一样事物存在必有其存在的意义。

论坛徽章:
0
155 [报告]
发表于 2009-12-28 10:01 |只看该作者
原帖由 foho 于 2009-12-27 23:39 发表
楼主说:
【数组名仅仅是一个指针而已,它的类型为数组的元素类型的指针,,只是通常这个指针指向第一个元素,而且为常量而已!
对编译器来说,任何类型的指针,仅仅是指向的内存大小不同,其它都按照相同的对待! 所以数组名减一,就好比一个指针减一效果一样。】

不错,数组名也是一个指针,但是此指针非彼指针。就像有人叫“王明”,历史上也有个人叫“王明”(如1927年那个),他们的本质都是人,但是你不能说这两个人是同一个人,至少所代表的都不同。

举个例子:
    int array[3][3];
      int  *p;
      若按照楼主的说法,array是int类型的指针,P也是,


那为什么p=array是错误的呢?
所以,数组名肯定不能单单理解为指针的,那本著名的《Pointers On C》也有此论述。


不对,数组就是指针,推理一下就知道了。

看这个:

int arr1[3];
int  *p1;
int arr2[3][3];
int  (*p2)[3];

p1 = arr1;
p2 = arr2;
p2 = &arr1;

arr1 是int*类型的衍生类型,arr2是int  (*p2)[3]类型的衍生类型,而 int  (*p2)[3] 类型就是 arr1[3] 的地址类型,而任何变量的地址类型都是指针类型,所以数组就是指针

论坛徽章:
0
156 [报告]
发表于 2009-12-29 23:16 |只看该作者
按LZ说法,C标准那么长文档里面反复出现的类型这一词成生么了?

论坛徽章:
0
157 [报告]
发表于 2009-12-29 23:25 |只看该作者
数组本来就是内存连续的数据,如果LZ这样说的话,那没有一种语言有数组了!因为每一种语言数组的存储方式都一样的!

论坛徽章:
1
射手座
日期:2014-08-04 16:49:43
158 [报告]
发表于 2009-12-29 23:31 |只看该作者

回复 #2 prolj 的帖子

C语言可以学到老的。。。

能用内存段去思考问题 已经算不错的了。。  化有招为无招。。看似简单 实则变幻无穷

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
159 [报告]
发表于 2009-12-30 09:57 |只看该作者
原帖由 liexusong 于 2009-12-29 23:25 发表
数组本来就是内存连续的数据,如果LZ这样说的话,那没有一种语言有数组了!因为每一种语言数组的存储方式都一样的!

不对

论坛徽章:
0
160 [报告]
发表于 2010-01-04 17:14 |只看该作者
有点扣文字的感觉
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP