免费注册 查看新帖 |

Chinaunix

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

[C] [原创]数组与指针---都是"退化"惹的祸 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-12-20 11:04 |只看该作者
不好意思,当了一把标题党
一般英文资料中都会用decay一词,所以就用了"退化"这个词, 不是自己想的, 呵呵

原帖由 Sorehead 于 2007-12-20 10:58 发表
ypxing写得非常不错,没看出有什么问题,顶一个。

另外有个疑问,ypxing怎么想到“退化”这个词的,有英文资料这么说,还是自己想出来的?

论坛徽章:
0
12 [报告]
发表于 2007-12-20 11:07 |只看该作者

论坛徽章:
0
13 [报告]
发表于 2007-12-20 12:14 |只看该作者
看明白了,应该是这样的吧。
char *s="china";占用内存10字节,包括用来存放指针s的4个字节。
char s[]="china";占用内存6字节,数组名s 没有属于自己的内存,只存在于符号表之中。
-----------
补充一下,char *s="china";s是在.data,但是"china"是在.rodata,加起来一共占10字节。

[ 本帖最后由 dxcnjupt 于 2007-12-20 13:02 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2007-12-20 12:31 |只看该作者
char *p="china";
char s[]="china";

p和s的区别在于它们是不同类型的变量,所以它们所占的内存空间和操作方式不同


原帖由 dxcnjupt 于 2007-12-20 12:14 发表
看明白了,应该是这样的吧。
char *s="china";占用内存10字节,包括用来存放指针s的4个字节。
char s[]="china";占用内存6字节,数组名s 没有属于自己的内存,只存在于符号表之中。

论坛徽章:
0
15 [报告]
发表于 2007-12-20 12:44 |只看该作者
都是http://bbs.chinaunix.net/thread-1030899-1-2.html惹得祸。。
不过ypxing也是蛮热心的

论坛徽章:
0
16 [报告]
发表于 2007-12-20 13:01 |只看该作者
顶一个

论坛徽章:
0
17 [报告]
发表于 2007-12-20 13:13 |只看该作者
嗯嗯,我就是这个意思

s和p的类型不一样,其中的一个区别是 指针p要占用内存,数组名s本身不占用内存。

论坛徽章:
0
18 [报告]
发表于 2007-12-20 14:22 |只看该作者
>>数组名s本身不占用内存
其实这种说法挺让人费解的

最好不要再想什么数组名了,
把他看成变量,然后知道它什么时候是指整个数组,什么时候退化成指针就好

原帖由 dxcnjupt 于 2007-12-20 13:13 发表
嗯嗯,我就是这个意思

s和p的类型不一样,其中的一个区别是 指针p要占用内存,数组名s本身不占用内存。

[ 本帖最后由 ypxing 于 2007-12-20 14:25 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2007-12-20 20:11 |只看该作者
看来要学习的东西很多,谢谢LZ

论坛徽章:
0
20 [报告]
发表于 2007-12-22 23:13 |只看该作者
顶顶顶!!!
论坛就是需要像你这样水平高又热心的人。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP