«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я не могу использовать непостоянную переменную для определения размера массива в C++?

Почему я не могу использовать непостоянную переменную для определения размера массива в C++?

Опубликовано 7 ноября 2024 г.
Просматривать:229

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