난 정말 다른 간단한 C 질문으로 모두 당신을 귀찮게했습니다.빠른 strlen 질문
다음 코드를 사용 :
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;
}
이 질문에. 그들은 왜 다른가? 그리고 왜 6인가? 고마워.
편집 : 죄송합니다. 문제를 해결할 수 있을지 알고 있습니다. 무슨 일인지 이해하고 싶었습니다. strlen은 \ 0을 찾을 때까지 계속 전달할 것입니다. 또한 내가 get_len 함수 대신에 main 함수에서 strlen했을 때 둘 다 4였습니다. 그냥 우연의 일치입니까?
예, 그냥 우연이었습니다. – AnT
't', 'e', 's', 't'시퀀스에 대한 편리한 문법 인 반면에, "test" , 0', 사실 특별한 경우로 char 배열을'char y [4] = "test";로 초기화 할 수 있습니다.이 경우 마지막 0은 생략 될 것입니다 ('y'). –