标题:重温了C风格字符串,有几个问题纠结以一下。
取消只看楼主
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
结帖率:94.87%
 问题点数:0 回复次数:3 
重温了C风格字符串,有几个问题纠结以一下。
1.字符串字面值"c"不是自动在末尾增加一个null,为什么赋值给 string对象的时候 他的长度不是2;
程序代码:
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main(){
string s="c";
cout<<s.size();
    return 0;
}

2.数组的名字即是指向数组的第一个元素的指针;
但是当
int shu[]={1,2,3};
cout<<shu;  是错误的
cout<<*shu;  输出1;

int ca[]="c++";
cout<<ca; 是正确的 且输出 c++ (这是为什么 ,跟int型不一样,切最后自动添加的null为什么没有输出)
cout<<*ca; 输出c
搜索更多相关主题的帖子: 字符串 color null 风格 
2013-08-08 20:55
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
得分:0 
回复 2楼 蚕头燕尾
int ca[]="C++"是笔误 ,不好意思。
我的编译器还是没法
cout<<shu;
2013-08-09 14:21
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
得分:0 
回复 3楼 rjsp
这个重载是记住就可以了吗。
2013-08-09 14:28
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
得分:0 
回复 8楼 rjsp
char型数组中每一个元素都是1个字节所以字符串之间的地址是加1的,但是int数组每个元素占4个字节所以数组中每个元素地址的间隔是4,其实它也是连续的
出现乱码是因为系统没有找到结束符,你可以把数组设大一点,然后最后一个字节添0如:char a[6]={'h','a','p','p','y',0};就可以了


我网上看到这个解答来解释 直接输出数组名导致的不同,您觉得怎么样,
2013-08-09 22:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-418821-1-1.html




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

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