我写了这段代码 -
char s1[10] = "he", s2[20] = "she", s3[30], s4[30];
printf("%d %d", strlen(s2) + strlen(s3), strlen(s4));
输出 -
6 9
然后我写了这段代码 -
char s1[10] = "he", s2[20] = "she", s3[30], s4[30];
printf("%d %d", strlen(s3), strlen(s4));
删除strlen(s1) +
输出 -
0 3
关于字符串s4的长度如何变化的问题?
答案 0 :(得分:2)
s3
和s4
未初始化,并且不是'\0'
终止的C字符串,这是strlen()
所期望的。所以你不能将它们传递给strlen()
。
您看到的是undefined behaviour。
答案 1 :(得分:2)
你说“字符串s4”,但s4
不包含字符串。这是一个没有特定内容的字符数组。您只能在C风格的字符串上执行strlen
。所以你的代码就破了。它的行为是不可预测的。