문자열 리터럴 크기: 차이점 풀기
다음 코드 조각을 고려하세요.
#include <iostream> using namespace std; int main() { const char* const foo = "f"; const char bar[] = "b"; cout << "sizeof(string literal) = " << sizeof("f") << endl; cout << "sizeof(const char* const) = " << sizeof(foo) << endl; cout << "sizeof(const char[]) = " << sizeof(bar) << endl; }
이 코드를 실행하면 다음이 드러납니다. 흥미로운 results:
sizeof(string literal) = 2 sizeof(const char* const) = 4 sizeof(const char[]) = 2
결과 이해
문자열 리터럴 유형 해석
sizeof는 문자열 리터럴에 필요한 공간을 계산하지만 기본 유형은 변경하지 않습니다. 문자열 리터럴은 계속해서 'const char의 크기 N 배열' 유형을 가지며, 여기서 N은 종료 null 문자를 나타냅니다.
배열 대 포인터 동작
배열이 sizeof로 전달될 때 포인터로 붕괴되지 않는다는 점에 유의하는 것이 중요합니다. 즉, sizeof(bar)는 배열에 대한 포인터의 크기가 아니라 배열 자체의 크기를 반환합니다.
결론
요약하면 sizeof(" f")는 널 문자를 포함하여 문자열 리터럴에 필요한 공간을 반환합니다. 그러나 sizeof(foo) 및 sizeof(bar)는 관련된 유형 차이로 인해 다르게 동작합니다. C 프로그래밍에서 문자열 리터럴을 사용할 때 이러한 뉘앙스를 이해하는 것이 필수적입니다.
위 내용은 문자열 리터럴 `sizeof`, `const char* const` 및 `const char[]`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!