문자열 리터럴은 명시 적으로 문자열 리터럴에 지정된 많은 문자가 포함 된 문자 배열의 유형이 그리고 종결 제로.
예를 들어 문자열 리터럴 "a"
은 'a'
과 '\0'
의 두 문자로 구성되며 char [2]
유형입니다. 배열의 정의에서
는
str2
char str2[1]="a";
당신은 명시 적으로 크기와 동일 1. 그래서 sizeof(str2)
이 number_of_characters * sizeof(char)
이 str2
의 이러한 정의는 것을 고려하다 1과 동일 될 것이라고 지정 C++에서 유효하지 않은 정의로 간주되는 이유는 위의 문자열 리터럴에 종결 자 0이 포함되어 있으므로 초기화 된 객체 (즉 char 유형의 요소)보다 초기화 도구가 많기 때문입니다. 그 사용 방법을 많이 초기화에 기초하여 계산되도록 배열이 정의
char str3[]="a";
배열의 크기
지정되지 않는다. 문자열 리터럴에는 두 문자 (
'a'
및
'\0
')가 포함되어 있으므로
str3
은이 문자로 초기화되며 두 요소가 포함됩니다. 즉
str3
은 문자열 리터럴의 정확한 사본이됩니다. 따라서
sizeof(str3)
은 2와 같습니다.
대신에 무엇을 기대 했습니까? – mafso