> 백엔드 개발 > C++ > 본문

C에서 배열 크기를 초기화하기 위해 변수를 사용할 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-28 17:30:30
원래의
562명이 탐색했습니다.

Why Can't I Use a Variable to Initialize an Array Size in C  ?

가변 초기화 배열 크기: C 상수 표현식의 역설

C에서는 const int를 사용하여 배열 크기 선언 허용될 수도 있고 금지될 수도 있습니다. 다음 예를 고려하십시오.

<code class="cpp">const int size = 2;
int array[size] = {0}; // Valid</code>
로그인 후 복사
<code class="cpp">int a = 2;
const int size = a;
int array[size] = {0}; // Compile error</code>
로그인 후 복사

결정적인 차이점은 크기 초기화에 있습니다. 첫 번째 예에서는 상수 표현식(2)을 사용하여 컴파일 타임에 크기를 설정합니다. 이를 통해 컴파일러는 컴파일 중에 배열에 대한 메모리를 예약할 수 있습니다.

반대로 두 번째 예에서는 변수(a)를 사용하여 크기를 초기화합니다. 이는 상수 표현식이 아니므로 컴파일러는 런타임까지 배열 크기를 결정할 수 없습니다. 결과적으로 컴파일 타임에 메모리 할당을 수행할 수 없어 컴파일 오류가 발생합니다.

이 제한은 순전히 기술적인 것이 아닙니다. C 위원회는 코드 안정성과 효율성을 보장하기 위해 의도적으로 변수 초기화 배열 크기를 금지했습니다. 이는 정의되지 않은 동작과 메모리 손상으로 이어질 수 있는 배열 크기를 동적으로 변경할 가능성을 제거합니다.

배열 크기를 상수 표현식으로 제한함으로써 C 개발자는 컴파일 중에 배열 크기를 결정해야 합니다. 이는 불확실성을 제거하고 코드 신뢰성을 향상시킵니다. 이러한 제한은 지나치게 엄격해 보일 수 있지만 궁극적으로 C 프로그램의 안전성과 예측 가능성에 기여합니다.

위 내용은 C에서 배열 크기를 초기화하기 위해 변수를 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!