设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 668|回复: 4
打印 上一主题 下一主题

[求助]一个字符到底多长

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 01:23:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个字节或者一个字符到底多长?我的计算机算不出来了哈
请看我的程序:

#include<iostream>
using namespace std;
int main()
{
char i='a';
char *p;
p=&i;
cout<<p<<endl;
p=p+1;
cout<<p<<endl;
return 0;
}
显示如下:


附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
2#
发表于 2009-11-4 01:23:48 | 只看该作者
标准库提供的cout<<,当输出char *类型时并不是输出p指向的字符,他默认p指向的是一个字符串.
都知道字符串是以'\0'结尾的,而在你的程序里p指向一个单个的字符.输出时,会不断输出p指向的字符之后的字符,直到遇到'\0',这其中如果有不能读的内存区域,你的程序就会崩溃.

如果你仅想知道char的大小,用sizeof(char)就行了
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 01:23:49 | 只看该作者
说的 很好。
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 01:23:50 | 只看该作者
#include<iostream>
using namespace std;
int main()
{
char i='a';
char *p;
p=&i;
cout<<p<<endl;
p=p+1;
cout<<p<<endl;
return 0;
}
没有\0结束啊
cout<<对字符串只认这个
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 01:23:51 | 只看该作者
#include<iostream>

using namespace std;

int main()
{
char i='a';
char *p;
p=&i;
for(char *tmp=p;*tmp!='\0';++tmp)
cout<<*tmp;
cout<<endl;
cout<<p<<endl;

return 0;
}

这是我改的程序,for循环从p指向的字符开始输出直到'\0'。
你会发现for循环的输出和cout一样
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 23:32 , Processed in 0.072137 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表