编译器会自动给字符串加一个终结符'\0'吗?

ymaom 2004-08-10 08:07:15

能否这样说,如不能,为什么?应该怎样说才对。
别处,在C/C++,里能否将字符串和终结符'\0',显示出来?
谢谢!
...全文
260 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
backspray 2004-08-11
  • 打赏
  • 举报
回复
因为'\0'要是内存中的值是0000 0030n的话,那么用char a='\0';printf("%d",a);将显示0的10进制数值。因该是48,但是要执行这个语句的话,,结果是0。
所以证明了上面的我的想法
backspray 2004-08-11
  • 打赏
  • 举报
回复
能否这样说,如不能,为什么?应该怎样说才对。
别处,在C/C++,里能否将字符串和终结符'\0',显示出来?
谢谢!
----------------------------------------
用双引号才会加零才会加'÷0'
显示不出来,《终结符'\0'是显示不出的,是ascii值为0的那个字符》?。
知道是为什么吗?
我想可能是这样。
因为'\0'是表示是空值,,
在内存中,空值是什么,设空就是0000 0000h啦,但是这不是说值是字符’0‘
因为字符’0‘的再内存中的代码应该是0000 0030h,这里再屏幕上显出字符’0‘
时代表内存中的值是0000 0000,是空值,而不是代表内存中的值是0000 0030!
sunjx119 2004-08-10
  • 打赏
  • 举报
回复
用“”的编译器自动加‘\0’
用数组自己凑的要自己加
021850524 2004-08-10
  • 打赏
  • 举报
回复
只有用""括起来的字符串是由编译器在编译期间自动加的'\0'(ascii值为0).
RookieStar 2004-08-10
  • 打赏
  • 举报
回复
只能说那些用""括起来的常量字符串是由编译器自动加的这个'\0':
char str[]="123";
// str[0]=='1' str[1]=='2' str[2]=='3' str[3]=='\0'

终结符'\0'是显示不出的,是ascii值为0的那个字符。
Dong 2004-08-10
  • 打赏
  • 举报
回复
编译器会自动给字符串加一个终结符'\0'吗?
能否这样说,如不能,为什么?应该怎样说才对。
------------------------------------------------
每个字符串都有的。包括数组。但字符没有

别处,在C/C++,里能否将字符串和终结符'\0',显示出来?

你平时显示不处理是因为编译器对char*指针做了一些特殊的处理所以不可以显示,但你转换一下输出类型就可以看到了。
char ch='\0';
printf("%d\n",ch);

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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