一个字符数组,如果包含了‘\0’,则就是一个字符串,否则不是字符串,对吗?

wycfgq 2009-11-05 03:25:17
一个字符数组,如果包含了‘\0’,则就是一个字符串,否则不是字符串,对吗?
-----------------------------------------------------------
字符串,是以字符数组的形式体现的,我的上述理解对吗?
即如果一个字符数组中,不包含空字符'\0',那么它仅是一个字符的数组,不能当作字符串来处理,因为找不到结尾标志。
只有包含了空操作符,有个结尾标志,这个字符数组才是字符串,我不知这样理解对吗?

也就是说,字符数组与字符串是不等同的。
...全文
1188 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
cphj 2009-11-05
  • 打赏
  • 举报
回复
准确的说是这样:

对于C标准库来说(如:string.h),以'\0'结尾的就是字符串,因为C标准库约定字符串以'\0'结尾

对于不需要此约定的库(如:C++的string)或者其他用途的字符处理(如:加密)来说,'\0'不表示结尾
loveour 2009-11-05
  • 打赏
  • 举报
回复
我觉得不能简单的这样考虑是否是字符串。如果没有'\0',那么就不能使用依赖于此的一些函数,但是单单作为字符数组,在里面保存字符,自己去处理,那么看做字符串也未尝不可。所以关键还是要看应用
hhpltby2007 2009-11-05
  • 打赏
  • 举报
回复
学习下 ...
yet_flash 2009-11-05
  • 打赏
  • 举报
回复
BSTR也不是
某某9 2009-11-05
  • 打赏
  • 举报
回复
c风格字符串
sonic_andy 2009-11-05
  • 打赏
  • 举报
回复
VB的字符串就可以不包括'\0',呵呵
slowgrace 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 goodboy5201314 的回复:]
字符串也不一定是以字符数组的形式体现吧?字符型指针不也一样吗?虽说数组也是指针,但也有不同吧!
[/Quote]

字符型指针赋值后还是得指向字符数组,不然它只能指向一个字符而不是字符串。
无名君jn 2009-11-05
  • 打赏
  • 举报
回复
字符串用字符数组表示,楼主说的有点错误,只要以数组形式表示,就是字符串
leechrockgames 2009-11-05
  • 打赏
  • 举报
回复
char name[200]="..//bin//abc.txt";
char *setfinger="head";
char setarray[200]="ABC";
char setdata[200]="12345";
char *setenter="\n";//回车
char *setend="\0";//插入结束符
char *setend1="\r";//结束
char *setend2="\r\n";//回车
char *setdataend="data end";
fkestrel 2009-11-05
  • 打赏
  • 举报
回复
理解可以..
ztenv 版主 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mstlq 的回复:]
搞加密搞多了……
身体留着比特流,就算有"\0",我也不认为它是字符串……

是什么,要看使用者怎么解释……
[/Quote]

顶一下,的确是这个样子,比如:

char a[200];
memset(a,0,200);
memcpy(a,"1234",4);
memcpy(a+5,"abcd",4);

.....

你说这是字符串呢还是字符数组呢?
goodboy5201314 2009-11-05
  • 打赏
  • 举报
回复
字符串也不一定是以字符数组的形式体现吧?字符型指针不也一样吗?虽说数组也是指针,但也有不同吧!
ahao 2009-11-05
  • 打赏
  • 举报
回复
c++里还是用string吧
xingzhe2001 2009-11-05
  • 打赏
  • 举报
回复
都是字符串,没有'\0'的是个不安全的字符串罢了
do_fork 2009-11-05
  • 打赏
  • 举报
回复
实际上多字节编码的字符串中,单个字节中'\0'是常有的事情
do_fork 2009-11-05
  • 打赏
  • 举报
回复
字符串只在心里,认为'\0'也是一个正常字符,未必不可
slowgrace 2009-11-05
  • 打赏
  • 举报
回复
对。字符串实际上是字符数组,反之未必。
jackyjkchen 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mstlq 的回复:]
搞加密搞多了……
身体留着比特流,就算有"\0",我也不认为它是字符串……

是什么,要看使用者怎么解释……
[/Quote]

同感,咱们都擅长二进制
scorpio_tiger 2009-11-05
  • 打赏
  • 举报
回复
在C++里面字符数组和字符串貌似没有太大的区别。
jzd8000 2009-11-05
  • 打赏
  • 举报
回复
只要你心里明白就行了。
加载更多回复(5)

64,683

社区成员

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

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