我来用另一个可能非常简单的 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;
}
2个问题。为什么它们不同,为什么 y 是 6?多谢你们。
编辑:对不起,我知道什么会解决它,我只是想了解发生了什么。那么 strlen 是否只是继续转发该点,直到它碰巧找到 \0?另外,当我在 main 函数中而不是在 get_len 函数中执行 strlen 时,两者都是 4。这只是巧合吗?