Null-Terminated字符串

时间:2010-12-09 07:46:45

标签: c++

以下哪一项是以空字符结尾的字符串?

char *str1 = "This is a string.";
char *str2 = "This is a string.\0";
char str3[] = "This is a string.";
const char *str4 = "This is a string.";
const char *str5 = "This is a string.\0";
const char str6[] = "This is a string.";

4 个答案:

答案 0 :(得分:10)

  • 全部:字符串文字是以空字符结尾的字符串
  • str2str5具有双重终止字符串的特殊性

另外:

  • char *str1应为const char *str1
  • char *str2应为const char *str2

答案 1 :(得分:8)

它们都是以空值终止的(str2str5实际上是双空终止的)因为使用双引号是空终止的char数组的简写。

所以这个:

"Hello"

实际上就是这样:

{'H', 'e', 'l', 'l', 'o', '\0'}

指向字符串文字的变量应该声明为const

答案 2 :(得分:1)

全部。 C编译器自动聚合带有终止'\ 0'的字符串,然后将其存储在char []中或通过char *引用它;

答案 3 :(得分:-3)

不要使用char*s="hi",以防你想对字符串做某些事情,比如修改它,或者你想要连接它的东西,因为这里字符串hi是只读的部分内存和程序崩溃