2010-12-09 117 views
8

以下哪项是空终止字符串?空终止字符串

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."; 
+5

“我总是空终止。” – 2010-12-09 08:07:59

回答

10
  • 所有:一个字符串是一个空值终止字符串
  • str2str5有被双空值终止

而且特殊性:

  • char *str1应be const char *str1
  • char *str2应该是const char *str2
+2

你对最后一个(str3)错了。这是一个有效的数组初始化。 – ybungalobill 2010-12-09 07:55:02

8

它们都是空值终止(str2str5实际上是双空值终止),因为使用了双引号是一个空终止字符数组的简写。

所以这个:

"Hello" 

其实这是:指向字符串文字如这些

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

变量应被声明为const

1

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

-3

不要在使用的情况下,你char*s="hi"如果想你想连接东西,它做的字符串类似修改它,甚至因为这里串hi是只读存储器的部分,你的程序会崩溃