0
그냥 내 컴퓨터 과학 수업에 cstrings에 대해 알게하고 그냥 나를 때리는, 이는 나는 또한 "5"에 할당 할 수있는 것 같다,할당 값이
char ch[] = "hello";
그러나 법적 이 배열의 요소
ch[5] = "!";
허용 되나요? 아니면 그냥 배열의 끝에 null 문자를 무시 무엇입니까?
그냥 내 컴퓨터 과학 수업에 cstrings에 대해 알게하고 그냥 나를 때리는, 이는 나는 또한 "5"에 할당 할 수있는 것 같다,할당 값이
char ch[] = "hello";
그러나 법적 이 배열의 요소
ch[5] = "!";
허용 되나요? 아니면 그냥 배열의 끝에 null 문자를 무시 무엇입니까?
아니요. 허용되지 않습니다. 당신이 말했듯이, 이것은 끝에 null 문자를 덮어 씁니다. 유효한 색인에 액세스하고 있기 때문에 오류가 발생하지 않습니다.
그러나 문자열을 인쇄하려고하면 인쇄 기능이 문자열의 끝 부분을 알 수 없습니다. 인쇄 기능은 실수로 0 바이트에 도달 할 때까지 문자를 계속 인쇄합니다. 그렇지 않으면 다른 것이 버퍼 오버플로에 잘못되게됩니다. 이것은 정의되지 않은 동작입니다. 다른 문자열 함수 인 strcpy
, strlen
, strcmp
에도 같은 문제가 발생합니다. 문자열 끝을 찾기 위해 모두 null 문자를 사용합니다.