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

ymaom 2004-08-10 08:08:21

能否这样说,如不能,为什么?应该怎样说才对。
别处,在C/C++,里能否将字符串和终结符'\0',显示出来?
谢谢!
...全文
233 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfjj 2004-08-13
  • 打赏
  • 举报
回复
对于字符串,存储时当然自动在最后加一个'\0'作为结束的标志。
你可以看一看数据结构中有关字符串一章,对于串的处理有许多方法,c/c++中的字符串是其中的一种方法。
'\0'不是可以打印的字符,无法直接输出,你只能以ascii码的方式输出来。
lovelylulu 2004-08-12
  • 打赏
  • 举报
回复
其实这就是字符串和字符的区别吧
arkun83519 2004-08-12
  • 打赏
  • 举报
回复

lsdkzkald 2004-08-10
  • 打赏
  • 举报
回复
字符数组里面,你的字符串最后一个地址下面那个存的就是/0
Kusk 2004-08-10
  • 打赏
  • 举报
回复
顺便说一下, niece(神采奕奕)的例子int c[3]="123"少分配了一个单元,既然要加'\0',应该是int c[4]="123"才对吧~:)
Kusk 2004-08-10
  • 打赏
  • 举报
回复
呵呵,其实很简单,你只要记住:以双引号""表示的字符序列会加'\0'(即为字符串),就可以了~``:)
swbbs 2004-08-10
  • 打赏
  • 举报
回复
声明的时候按照字符串初始化就有自动\0
其他时候都不自动加
char a[8]="2" 有\0
char a[8]='2' 无\0
我记得好象是这样的
niece 2004-08-10
  • 打赏
  • 举报
回复
不一定 要看你怎么赋值了
int c[3]={'1','2','3'}
就不加了
int c[3]="123"

就会加
yangsongx 2004-08-10
  • 打赏
  • 举报
回复
当然要加了。
要不然,怎么知道字符串有多少个字符呢!就是依据\0来判断的。
snowingbf 2004-08-10
  • 打赏
  • 举报
回复
再发一个 更清楚的
#include <iostream.h>
#include <stdlib.h>
int main(){
char a[]="hello";
char* b;
b=a;
cout<<a[1]<<a[5]<<a[2]<<sizeof(a);
system("pause");}
snowingbf 2004-08-10
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <stdlib.h>
int main(){
char a[]="hello";
char* b;
b=a;
cout<<a[1]<<a[5]<<a[2];
system("pause");}
运行一下 就能解释你的疑问了
snowingbf 2004-08-10
  • 打赏
  • 举报
回复
自动加 不显示

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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