| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 830 人关注过本帖
标题:关于数组及字符数组
只看楼主 加入收藏
tfg0116
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-10-9
收藏
 问题点数:0 回复次数:5 
关于数组及字符数组
char ch[] = "abc";与char ch[] = {'a','b','c','\0'};的区别?
char *ch = "abc";与char ch[] = "abc";的区别?
int ia[] = {1,2,3};cout<<ia;输出的是ia的地址,而char ch[] = {'a','b','c','\0'};cout<<ch;却是"abc",why?
如果char ch[] = "abc";与char ch[] = {'a','b','c','\0'};没有'\0'的话,cout<<ch;输出的结果却不可想像,why?
请大家指教
搜索更多相关主题的帖子: 字符 
2008-10-28 20:03
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
只有char 类型的数组 输出它的数组名就可以输出整个数组
cout在输出char类型数组时 是要判断'\0' 如果去掉的话 那它会一直判断 等到 有'\0'的时候
2008-10-28 20:59
haiyungood
Rank: 2
等 级:论坛游民
帖 子:83
专家分:98
注 册:2008-7-2
收藏
得分:0 
char ch[] = "abc";是以字符串赋值的,char ch[] = {'a','b','c','\0'};是以字符赋值的,两者是相同的在给字符数组赋值时。
2008-10-28 21:53
haiyungood
Rank: 2
等 级:论坛游民
帖 子:83
专家分:98
注 册:2008-7-2
收藏
得分:0 
char ch[] = "abc";是以字符串赋值的,char ch[] = {'a','b','c','\0'};是以字符赋值的,两者是相同的在给字符数组赋值时。
2008-10-28 22:14
BBGASJ
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-8-15
收藏
得分:0 
个人人为你需要明白以下3个概念:
1,要表示一个字符串需要直到它首字符的地址和末字符的地址,而C风格字符串采用的方法是通过字符数组来实现,用数组名或数组第一个元素的地址表示首字符的地址,而用'\0'字符表示末字符的地址,所以只要定义式能体现出这两点,C风格字符串就定义成功了。
2,"abc"就是C风格字符串的一个实例,它会自动在abc后加一个空字符,即代表末字符的地址,而"abc"整个表达式返回的是‘a’的地址,即首字符的地址。
3,<< 操作符在类中定义了操作符重载,即对不同的操作数采取不同的操作。所以当左操作数为一个ostream对象,右操作数为一个字符指针时它将采取以下操作:通过字符指针找到字符串的首字符,输出到ostream中,然后依次输出首字符后的字符,直到遇到'\0'字符位置,这样一个字符串就输出完毕。

Stay Hungry. Stay Foolish.
2008-10-28 22:25
BBGASJ
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-8-15
收藏
得分:0 
char *ch = "abc";与char ch[] = "abc";还有一个区别:因为"abc"是个字符串常量,所以把他赋给指针后不能通过指针来修改他即不能有ch[0]='b'这样的语句出现,但数组可以修改。

Stay Hungry. Stay Foolish.
2008-10-29 06:57
快速回复:关于数组及字符数组
数据加载中...
 
   



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

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