| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1319 人关注过本帖
标题:概念问题
只看楼主 加入收藏
wubizao
Rank: 1
来 自:荆州长大电信
等 级:新手上路
帖 子:223
专家分:0
注 册:2006-6-24
收藏
 问题点数:0 回复次数:9 
概念问题
char s[]="china";char *p; p=s;

1.s数组长度和p所指向的字符串长度相等
2.p与s[0]相等
这两个说法哪个对?
搜索更多相关主题的帖子: 概念 
2007-12-31 21:50
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
第二个对

—>〉Sun〈<—
2007-12-31 22:42
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
第二个对吗?*p=s[0]才对吧!s[0]='c',p是什么?
2007-12-31 22:51
wubizao
Rank: 1
来 自:荆州长大电信
等 级:新手上路
帖 子:223
专家分:0
注 册:2006-6-24
收藏
得分:0 
第二个我写错了
但是第一个我不知道如何理解,为什么错了?
望赐教

在路上走,看见了C,从此爱上了她
2007-12-31 23:25
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
第二个我看成 p[0] 等于 s[0] 了。
呵呵!

char s[] = "china";   // 数组 {'c', 'h', 'i', 'n', 'a', '\0'}
char *p;
p = s;

字符串的长度是字符串中字符的个数,不包括 '\0';
数组大小是数组的占用的内存空间。

因为 strlen(s) == 5; , sizeof(s) == 6,所以第一个错。

—>〉Sun〈<—
2007-12-31 23:53
dsjdcy
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-12-2
收藏
得分:0 
第一个是对的!!!
   s是个字符串数组名,也是一个指针~,s的长度即是字符串"china"的长度:6字节,而p也是指向"china"的指针,既然都是指向同一个字符串,凭什么长度就不一样咧!!!?????
   不过对于这种情况,可能就得重新考虑了:char s[10]="china",*p=s;s数组长度为10,这点没疑问,而p所指向的字符串的长度为10还是6,我就不知道了!!呵呵~~~~
至于第二个,p与s[0]肯定是不同的。就算是*p与s[0]也不见得能说相等,至少两者在用法上也有较大的差别,指针p的指向确实是字符串数组的第一个元素,但在这里它已经被定义(不同于声明)为指向具有10个元素的字符串数组,所以*p在表达式中的值是"china"而并非'c',指针也可使用下标,所以p[0]的值才是'c',说p[0]与s[0]相等那还说得过去。
   不知道我说的是不是这个道理,还望高手指正~~!!

[[italic] 本帖最后由 dsjdcy 于 2008-1-1 02:59 编辑 [/italic]]

有兴趣共同学习的加QQ287624635 !或E-main至dsjdcy@
2008-01-01 02:44
wubizao
Rank: 1
来 自:荆州长大电信
等 级:新手上路
帖 子:223
专家分:0
注 册:2006-6-24
收藏
得分:0 
的确,字符串长度不包括 '\0'
数组长度是数组占有的空间
多谢大家

在路上走,看见了C,从此爱上了她
2008-01-01 08:56
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
阴险啊```

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-01-01 13:02
岳C
Rank: 1
等 级:禁止发言
帖 子:354
专家分:0
注 册:2007-7-16
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2008-01-01 13:09
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
回复 6# 的帖子
"china"的长度是多少?字符串的实际长度没人会数出6个来吧!s的长度是6没错!楼主问的是:s数组长度和p所指向的字符串长度相等.理解字符串的长度时应该就是指其实际长度,没必要加1,只有在c语言种,用数组存放时,数组的长度要比字符串长度多1.所以我认为1是错的!
第二个中,*p与s[0]为什么不相等?实践是检验真理的唯一标准,你可以用程序运行看它们是不是相等的!p确实指向的是整个字符串,可字符串的值是什么?字符串的值就是字符串的首地址!(否则的话 char *p="china";不就是错的啦!p是字符指针,而赋值的却是字符串!)
p[0]=s[0]确实是对的,但难道*p.*(p+0).p[0]不相等?
2008-01-01 13:16
快速回复:概念问题
数据加载中...
 
   



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

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