반응형
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
반응형
'programing' 카테고리의 다른 글
C에서의 어레이 셔플 (0) | 2022.07.24 |
---|---|
Nuxt: 명령 'nuxt'를 찾을 수 없음 - 출력 디렉터리 'dist/'이(가) 없습니다. (0) | 2022.07.24 |
인터페이스 메서드의 마지막 인수 - 요점이 무엇입니까? (0) | 2022.07.23 |
Java 날짜 비교 방법 (0) | 2022.07.23 |
vue.js의 데이터에서 메서드를 호출하려면 어떻게 해야 합니까? (0) | 2022.07.23 |