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

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

Войти
Регистрация
Восстановить пароль
 
Leo008
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 4
#1

Добрый вечер! Передача в функцию константного значения и обьявление им массива - C++

20.11.2014, 17:35. Просмотров 224. Ответов 4
Метки нет (Все метки)

Вот у меня есть функция с объявленым массивом внутри:
f(const int &C) {
int mass[C];
}

Где тут ошибка ? Ведь размер массива объявляется константным значением, почему же тогда компилятор выдает ошибку ??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добрый вечер! Передача в функцию константного значения и обьявление им массива (C++):

Добрый вечер! если онлайн практика по С++ - C++
Всем добрый вечер учусь на курсах программирования все хорошо, но мало практики. Хотелось бы узнать если онлайн практики или или хорошие...

Добрый вечер. Ребят, нужен ваш совет - C++
Добрый вечер.Ребят,посоветуйте пожалуйста, хочу начать учить C++ по книге "ЯЗЫК ПРОГРАММИРОВАНИЯ C++. БАЗОВЫЙ КУРС" (Издательство:Вильямс;...

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

Добрый вечер, прошу помощи по строкам и лексемам (strtok) - C++
суть в чем... Строка будет скопирована из формул в экселе. По типу "=ЕСЛИ(A1>=12; 3;..." ит.п. Пытаюсь игнорировать пробелы, деля строку...

Добрый вечер, как сделать задержку экрана, после введенных цифр? - C++
#include "StdAfx.h" #include <stdio.h> void pr1() { int a,b,c,d; printf("\n"); printf("vvevitu a,b,c \n:"); ...

Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа? - C++
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX. F= a*x*x +b*x +c(при a<0 и с...

4
Croessmah
Эксперт CЭксперт С++
13510 / 7668 / 866
Регистрация: 27.09.2012
Сообщений: 18,866
Записей в блоге: 3
Завершенные тесты: 1
20.11.2014, 17:38 #2
Цитата Сообщение от Leo008 Посмотреть сообщение
едь размер массива объявляется константным значением, почему же тогда компилятор выдает ошибку ??
птому что размер массива должен быть константой времени компиляции
1
Гоблин-инженер
113 / 110 / 32
Регистрация: 18.09.2014
Сообщений: 337
20.11.2014, 17:39 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Leo008, подразумевается, что "константное" в этом контексте имеется в виду "известное на этапе компиляции" (если ошибаюсь, поправьте). Если вы хотите создать массив с нужным размером, можете воспользоваться динамическими массивами. А можете использовать gcc, там можно объявлять статические массивы переменной длины
1
MrGluck
Модератор
Эксперт CЭксперт С++
7418 / 4533 / 673
Регистрация: 29.11.2010
Сообщений: 12,287
20.11.2014, 19:21 #4
это ещё называется VLA, входит в стандарт С99, в С++ так и не прижился( Но поддерживается gcc
1
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3910 / 2147 / 549
Регистрация: 18.10.2014
Сообщений: 3,755
20.11.2014, 21:14 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Leo008 Посмотреть сообщение
Где тут ошибка ?
Размер массива в С++ должен задаваться так называемым Integral Constant Expression (целочисленным константным выражением - ЦКВ). Требование ЦКВ - существенно более сильное требование, чем просто "const". Это фактически требование быть константой времени компиляции. Далеко не каждый "const" является ЦКВ. Ваш - не является.

Добавлено через 3 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
это ещё называется VLA, входит в стандарт С99, в С++ так и не прижился( Но поддерживается gcc
Что интересно, С11 сделал, в некотором смысле, шаг назад о VLA. От реализаций языка С больше не требуется безусловной поддержки VLA. Реализации, не поддерживающие VLA, должны определять макро __STDC_NO_VLA__ со значением 1.
2
20.11.2014, 21:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 21:14
Привет! Вот еще темы с ответами:

Изменения константного значения - C++
Всем привет, вопрос такой. Пытаюсь разобраться с приведением типов, в частности с изменением const значений через указатель. Вот код: ...

warning C4309: =: усечение константного значения - C++
Добрый вечер. Почему-то С++ отказывается выводить на экран русские буквы: вместо них бессмысленный набор символов. Я решил написать...

Инициализация константного члена класса с проверкой значения - C++
Допустим есть класс константным членом class a{ const int i; public: a(int ii):i(ii){}; } Можно ли как-нибудь...

Беру и спокойно вызываю неконстантную функцию для константного объекта - C++
Это как ? Везде пишут, что сие невозможно в принципе. Или есть исключение для конструктора ? #include <iostream> using namespace...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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