'\0'占几个字节

Mynameiswuyihao 2009-02-07 12:45:09
字符串末尾的'\0'占多少字节?
#include<iostream.h>

int main()
{
char a[]="abcdefg";int b,c;
b=sizeof(a)/sizeof(char)-2; //这里要减2,是因为'\0'占两个字节吗?
for(c=0;c<=b;c++)
{
a[c]=a[c]+1;
cout<<a[c];
}
}
...全文
3252 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljmscsq 2009-02-07
  • 打赏
  • 举报
回复
'\0'是一个字符,所以是一个字节。
数组下标是从0开始算的。
sizeof(a)是a数组的实际大小。7个字母加'\0'所以是8
如果b=sizeof(a)/sizeof(char)-1;
那么你程序就要这样
for(c=0;c<b;c++) //这里等号去掉
{
a[c]=a[c]+1;
cout<<a[c];
}
waizqfor 2009-02-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 Mynameiswuyihao 的帖子:]
字符串末尾的'\0'占多少字节?

C/C++ code#include<iostream.h>

int main()
{
char a[]="abcdefg";int b,c;
b=sizeof(a)/sizeof(char)-2; //这里要减2,是因为'\0'占两个字节吗?
for(c=0;c<=b;c++)
{
a[c]=a[c]+1;
cout<<a[c];
}
}
[/Quote]
LZ试试这程序就知道怎么回事了

#include <stdio.h>
int main()
{
printf("%d\n",sizeof("\0"));
printf("%d\n",sizeof('\0'));
return 0;
}
arong1234 2009-02-07
  • 打赏
  • 举报
回复
这时因为你从c=0到c<=b走了b+1个字符,实际上长度是b+1而不是b
\0当然是一个字节

要想b是实际字符串长度,循环应该是c<b,而不是c<=b
Guilty 2009-02-07
  • 打赏
  • 举报
回复
这个例子是老师写的吗?真差劲
Guilty 2009-02-07
  • 打赏
  • 举报
回复
楼主好菜啊,例子程序也是吃饱撑的人写的,迷惑新手?
arong1234 2009-02-07
  • 打赏
  • 举报
回复
这和数组下标无关,加入b=1,你得循环循环了几次?你希望他循环几次?自己手工算一下不就知道了
Mynameiswuyihao 2009-02-07
  • 打赏
  • 举报
回复
是因为数组下标从0开始吧?
Mynameiswuyihao 2009-02-07
  • 打赏
  • 举报
回复
还是不懂为什么是<b而不是<=b
caremsi 2009-02-07
  • 打赏
  • 举报
回复
'\0'当然是一个字节,但是如果你习惯C++风格的话就没必要用C风格的字符串,CString比较方便。
还有一个问题是sizeof和strlen不一样,如果是用strlen的话,统计长度不包括'\0'字符,而且它往往就是统计第一个'\0'字符作为结束标志。
yellowhwb 2009-02-07
  • 打赏
  • 举报
回复
字符串中,'\0'就是0,占一个字节
sagegz 2009-02-07
  • 打赏
  • 举报
回复
'\0'是字符类型的,而字符类型只占一个字节,所以当然是一个字节啦!
sizeof()可以用来求字节数.另外帮你测试了下int跟char类型所占的字节数.

#include <stdio.h>

int main(){
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(char));
printf("%d\n",sizeof('\0'));
return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧