programing

null-terminator로 끝나는 문자열 리터럴에는 여분의 null-terminator가 포함되어 있습니까?

firstcheck 2022. 7. 23. 12:14
반응형

null-terminator로 끝나는 문자열 리터럴에는 여분의 null-terminator가 포함되어 있습니까?

예를 들어 다음과 같습니다.

char a[] = "abc\0";

표준 C는 다른 바이트의 값이0문자열 끝에 이미 0이 있는 경우에도 추가되어야 합니까?그럼, 뭐?sizeof(a)4나 5와 같습니까?

문자열 내용에 관계없이 모든 문자열 리터럴에는 암묵적인 늘 터미네이터가 있습니다.

표준(6.4.5 String Literals)에는 다음과 같이 기술되어 있습니다.

문자열 리터럴 또는 리터럴에서 생성되는 각 멀티바이트 문자 시퀀스에 값 0의 바이트 또는 코드가 추가됩니다.

스트링 리터럴은"abc\0"에는 명시적인 것 외에 암묵적인 늘 터미네이터가 포함되어 있습니다.그래서 어레이는a에는 5가지 요소가 포함되어 있습니다.

언급URL : https://stackoverflow.com/questions/17943411/do-string-literals-that-end-with-a-null-terminator-contain-an-extra-null-termina

반응형