以下哪一项是以空字符结尾的字符串?
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.";
答案 0 :(得分:10)
str2
和str5
具有双重终止字符串的特殊性另外:
char *str1
应为const char *str1
char *str2
应为const char *str2
答案 1 :(得分:8)
它们都是以空值终止的(str2
和str5
实际上是双空终止的)因为使用双引号是空终止的char数组的简写。
所以这个:
"Hello"
实际上就是这样:
{'H', 'e', 'l', 'l', 'o', '\0'}
指向字符串文字的变量应该声明为const
。
答案 2 :(得分:1)
全部。 C编译器自动聚合带有终止'\ 0'的字符串,然后将其存储在char []中或通过char *引用它;
答案 3 :(得分:-3)
不要使用char*s="hi"
,以防你想对字符串做某些事情,比如修改它,或者你想要连接它的东西,因为这里字符串hi
是只读的部分内存和程序崩溃