Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
#1

Статический массив, в котором количество элементов задаётся неконстантной переменной - C++

24.01.2014, 12:47. Просмотров 551. Ответов 15
Метки нет (Все метки)

Почему такое вообще катит ?
Что говорит стандарт на эту тему?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main() {
    
    int N;
    
    cin >> N;
    
    int a[N];
    
    for (int i=0; i<N; i++)
    cin >> a[i];
    
    for (int i=0; i<N; i++)
    cout << a[i] << endl;
    
    return 0;
}
Проверялось на QtCreator 3.0.0 с MinGW64, также на ideone.com. Даже предупреждений не выдаётся.
Посему вопросы:
а) соответствует ли такое объявление массива стандарту?
б) если нет, то как компиляторы обрабатывают сие?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 12:47     Статический массив, в котором количество элементов задаётся неконстантной переменной
Посмотрите здесь:

Двумерный массив. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов - C++
Условие задачи следующее: Дан двумерный массив размером nхm, заполненный случайными числами. Определить, есть ли в данном массиве столбец,...

Создать статический массив на 10 элементов и заполнить его случайными числами из диапазона [0;5] - C++
Знает кто-то, как решить задачу на С++? Создать статический массив на 10 элементов и заполнить его случайными числами из диапазона ....

Одномерный массив. Найти и напечатать количество чётных элементов и количество нечётных элементов - C++
массив F задан случайными числами в диапазоне от -30 до 20. найти и напечатать количество чётных элементов и количество нечётных...

Массив, в котором возможна нумерация элементов не с нуля - C++
Нужно написать класс, описывающий массив со смещенной нумерацией элементов (в котором возможна нумерация не только с 0, но и с 1, 3, -6 и...

Массив: Удалить строку, в котором есть слово, имеющее наибольшее количество разных букв. - C++
Задание: дан двумерный массив строк, удалить рядок в котором есть слово которое имеет наибольшее количество разных букв. по порядку. ...

Нужно определить, есть ли в двумерном массиве столбец, в котором равное количество положительных и отрицательных элементов - C++
Нужно определить, есть ли в двумерном массиве столбец, в котором равное количество положительных и отрицательных элементов и вывести их...

Найти номер столбца массива размером МхN, в котором находится наибольшее количество элементов, кратных 5 - C++
Можете помочь. &quot;Найти номер столбца массива размером МхN, в котором находится наибольшее количество элементов, кратных 5. Элементы задаются...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
24.01.2014, 12:54     Статический массив, в котором количество элементов задаётся неконстантной переменной #2
Потому что программе нужно выделить в памяти фиксированное количество. А если переменная не константная - то, естественно, она может измениться в ходе программы.
Если хотите массив с нефиксированным количеством элементов - диманические в помощь.
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
24.01.2014, 13:00  [ТС]     Статический массив, в котором количество элементов задаётся неконстантной переменной #3
Цитата Сообщение от Тамика Посмотреть сообщение
Потому что программе нужно выделить в памяти фиксированное количество. А если переменная не константная - то, естественно, она может измениться в ходе программы.
Если хотите массив с нефиксированным количеством элементов - диманические в помощь.
Да речь не о том вообще, я в курсе про динамические.
Приведённый код по идее вообще не должен компилироваться, но компилируется безо всякого писка и преспокойно работает. Вопрос - почему ?
TheFox
131 / 67 / 10
Регистрация: 13.05.2013
Сообщений: 438
24.01.2014, 13:05     Статический массив, в котором количество элементов задаётся неконстантной переменной #4
Цитата Сообщение от mariko_11 Посмотреть сообщение
соответствует ли такое объявление массива стандарту?
А почему нет. Я вообще не пойму, что тут может смущать.
Цитата Сообщение от mariko_11 Посмотреть сообщение
как компиляторы обрабатывают сие?
Получает N и создает статический массив длинной N.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
24.01.2014, 13:05     Статический массив, в котором количество элементов задаётся неконстантной переменной #5
Цитата Сообщение от mariko_11 Посмотреть сообщение
Да речь не о том вообще, я в курсе про динамические.
Приведённый код по идее вообще не должен компилироваться, но компилируется безо всякого писка и преспокойно работает. Вопрос - почему ?
Да, прошу прощения. Я сначала невнимательно прочитала, ответила, а потом перечитала и поняла, что херню сморозила.
TheFox
131 / 67 / 10
Регистрация: 13.05.2013
Сообщений: 438
24.01.2014, 13:06     Статический массив, в котором количество элементов задаётся неконстантной переменной #6
Цитата Сообщение от mariko_11 Посмотреть сообщение
Вопрос - почему ?
Вам такой же вопрос, почему вы считаете, что он не должен компилироваться?
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
24.01.2014, 13:07     Статический массив, в котором количество элементов задаётся неконстантной переменной #7
Цитата Сообщение от TheFox Посмотреть сообщение
Вам такой же вопрос, почему вы считаете, что он не должен компилироваться?
Кстати, и правда интересно почему. У меня вот подобный код не компилируется.
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
24.01.2014, 13:09  [ТС]     Статический массив, в котором количество элементов задаётся неконстантной переменной #8
Цитата Сообщение от TheFox Посмотреть сообщение
А почему нет. Я вообще не пойму, что тут может смущать.
Потому что, етидрёна вошь, переменная не константная. Везде пишут: либо литерал, либо константную,третьего не дано, и подобные фокусы с неконстантными переменными называют неправильными, даже коды похожие приводят.

Цитата Сообщение от TheFox Посмотреть сообщение
Получает N и создает статический массив длинной N.
Размер статического массива должен быть известен ещё при компиляции.

Добавлено через 44 секунды
Цитата Сообщение от TheFox Посмотреть сообщение
Вам такой же вопрос, почему вы считаете, что он не должен компилироваться?
Дайте мне стенку. Пожааалуйста! Я об неё головой побьюсь.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
24.01.2014, 13:09     Статический массив, в котором количество элементов задаётся неконстантной переменной #9
Дело в том, что некоторые компиляторы это могутЬ, а некоторые нет. Сам вчера у Солтера прочитал.
Так что это вопрос не стандарта, а компилятора. Мой компилятор так не может.
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
24.01.2014, 13:11  [ТС]     Статический массив, в котором количество элементов задаётся неконстантной переменной #10
Цитата Сообщение от Тамика Посмотреть сообщение
Кстати, и правда интересно почему. У меня вот подобный код не компилируется.
Что используете?

Добавлено через 1 минуту
Цитата Сообщение от Ilot Посмотреть сообщение
Дело в том, что некоторые коммпиляторы это могутЬ, а некоторые нет. Сам вчера у Солтера прочитал.
А мона поточнее? У Солтера где?
И как они это могут - вот что интересно.

Вот я и говорю - непереносимый код, сиречь бяка на лопате. А меня тут спрашивают ещё, что смущаеть...
Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
24.01.2014, 13:14     Статический массив, в котором количество элементов задаётся неконстантной переменной #11
Цитата Сообщение от TheFox Посмотреть сообщение
Вам такой же вопрос, почему вы считаете, что он не должен компилироваться?
Потому что компилятор когда выполняет статическое связывание имени массива, должен уже "знать" сколько байт выделить под массив. Размерность же массива, пользователь вводит на этапе выполнения программы. Т.е. вышеуказанной информации в момент компиляции нет.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
24.01.2014, 13:14     Статический массив, в котором количество элементов задаётся неконстантной переменной #12
Цитата Сообщение от mariko_11 Посмотреть сообщение
Что используете?
Использую Студию 2010.
1>ClCompile:
1> N.cpp
1>c:\users\documents\visual studio 2010\projects\nss\nss\n.cpp(9): error C2057: expected constant expression
1>c:\users\documents\visual studio 2010\projects\nss\nss\n.cpp(9): error C2466: cannot allocate an array of constant size 0
1>c:\users\documents\visual studio 2010\projects\nss\nss\n.cpp(9): error C2133: 'mas' : unknown size
1>
1>Build FAILED.
TheFox
131 / 67 / 10
Регистрация: 13.05.2013
Сообщений: 438
24.01.2014, 13:16     Статический массив, в котором количество элементов задаётся неконстантной переменной #13
Цитата Сообщение от mariko_11 Посмотреть сообщение
переменная не константная
Ну тогда у вас какой-то неправильный компилятор, который делает неправильный код
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
24.01.2014, 13:18     Статический массив, в котором количество элементов задаётся неконстантной переменной #14
Солтер Николас А. и др. С++ для профессионалов.
Миниатюры
Статический массив, в котором количество элементов задаётся неконстантной переменной  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 13:20     Статический массив, в котором количество элементов задаётся неконстантной переменной
Еще ссылки по теме:

В одномерном массиве, размер которого задаётся пользователем, найти сумму первых K минимальных элементов - C++
Для одномерного массива С найти сумму К минимальных элементов, где 0&lt;n&lt;45. К ввести с клавиатуры. не могу понять как сделать это..

Надо найти номер строки массива размером МхN, в котором находится наибольшее количество четных элементов - C++
Помогите решить, надо найти номер строки массива размером МхN, в котором находится наибольшее количество четных элементов. Элементы...

Массив: Определить строку, в котором среднее арифметическое положительных элементов имеет наименьшее значение - C++
в заданной матрицы Р (4,4) определить строку, в котором среднее арифметическое положительных элементов имеет меньшее значение, вывести...

Вызов неконстантной функции класса в mem_fun_ref - C++
Привет. мне нужно вызвать функцию класса в mem_fun_ref, но ей, как известно требуется чтобы передаваемая функция класса была...

Построить одномерный массив, в котором элементы равны суммам элементов строк данного двумерного массива - C++
1. Дан двухмерный массив A. Написать программу построения одномерного массива B, элементы которого соответственно равны а) суммам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
24.01.2014, 13:20  [ТС]     Статический массив, в котором количество элементов задаётся неконстантной переменной #15
Цитата Сообщение от Ilot Посмотреть сообщение
Солтер Николас А. и др. С++ для профессионалов.
Блин, ну так и думала. Спасибо.
Yandex
Объявления
24.01.2014, 13:20     Статический массив, в котором количество элементов задаётся неконстантной переменной
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru