"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C++에서 배열 크기를 정의하기 위해 상수가 아닌 변수를 사용할 수 없는 이유는 무엇입니까?

C++에서 배열 크기를 정의하기 위해 상수가 아닌 변수를 사용할 수 없는 이유는 무엇입니까?

2024-11-07에 게시됨
검색:362

Why Can\'t I Use a Non-Constant Variable to Define an Array Size in C  ?

Const Int를 배열 크기로 사용하는 것에 대한 제한 사항 이해

C에서 배열 크기로 const int를 사용하는 것은 다음과 같습니다. 특정 제한. 이러한 제한 사항이 존재하는 이유를 살펴보겠습니다.

다음 시나리오를 고려하세요.

  1. 허용됨:

    const int size = 2;
    int array[size] = {0}; // Compilation succeeds
  2. 컴파일 오류:

    int a = 2;
    const int size = a;
    int array[size] = {0}; // Compilation fails

이유:

이러한 제한의 근본적인 이유는 상수 표현식의 개념에서 비롯됩니다. C에서 상수 표현식은 컴파일 중에 평가할 수 있는 컴파일 시간 상수입니다. 첫 번째 시나리오에서는 크기가 컴파일 시간 상수(즉, 2)로 초기화되어 컴파일러가 컴파일 시간에 배열의 크기를 결정할 수 있습니다. 이 정보는 메모리 할당에 중요합니다.

그러나 두 번째 시나리오에서는 크기가 a 값으로 초기화되는데, 이는 변경 가능하므로 일정하지 않습니다. 이는 a의 값이 알려진 런타임까지 컴파일러가 배열의 크기를 결정할 수 없음을 의미합니다. 결과적으로 배열에 대한 컴파일 타임 메모리 할당을 수행할 수 없어 컴파일 오류가 발생합니다.

이러한 제한의 근거는 프로그래밍 언어의 일관성과 예측 가능성을 유지하는 것입니다. 배열 크기 선언에 상수가 아닌 표현식을 허용하면 컴파일 중에 불확실성이 발생하고 잠재적으로 런타임 오류나 예측할 수 없는 동작이 발생할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3