我又来打扰大家了,这次是一个可能非常简单的C语言问题。
使用以下代码:
int get_len(char *string){
printf("len: %lu\n", strlen(string));
return 0;
}
int main(){
char *x = "test";
char y[4] = {'t','e','s','t'};
get_len(x); // len: 4
get_len(y); // len: 6
return 0;
}
两个问题。它们为什么不同,y为什么是6?谢谢大家。
编辑:抱歉,我知道该怎么解决了,我只是想理解发生了什么。所以strlen是否只是一直向前移动指针直到找到\ 0?另外,当我在主函数中而不是在get_len函数中执行strlen时,两者都为4。这只是巧合吗?
"test"
是序列't','e','s','t',0的方便语法,但你实际上可以通过特殊情况使用
char y [4] ="test";初始化字符数组,在这种情况下,最后的0将被省略(在
y`中根本没有空间)。 - Pascal Cuoq