Null-Terminated字符串

czx*_*czx 8 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.";
Run Code Online (Sandbox Code Playgroud)

ice*_*ime 10

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

另外:

  • char *str1 应该 const char *str1
  • char *str2 应该 const char *str2

  • 你最后一个错了(str3).这是一个有效的数组初始化. (2认同)

Jac*_*kin 8

它们都是以null结尾的(str2并且str5实际上是双重终止的),因为使用双引号是空终止的char数组的简写.

所以这:

"Hello"
Run Code Online (Sandbox Code Playgroud)

实际上是这样的:

{'H', 'e', 'l', 'l', 'o', '\0'}
Run Code Online (Sandbox Code Playgroud)

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