Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Leo008
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 4
#1

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

20.11.2014, 17:35. Просмотров 253. Ответов 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++ по книге "ЯЗЫК...

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

Добрый вечер, прошу помощи по строкам и лексемам (strtok)
суть в чем... Строка будет скопирована из формул в экселе. По типу...

Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа?
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от...

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

4
Croessmah
++Ͻ
14146 / 8071 / 1512
Регистрация: 27.09.2012
Сообщений: 19,905
Записей в блоге: 3
Завершенные тесты: 1
20.11.2014, 17:38 #2
Цитата Сообщение от Leo008 Посмотреть сообщение
едь размер массива объявляется константным значением, почему же тогда компилятор выдает ошибку ??
птому что размер массива должен быть константой времени компиляции
1
Гоблин-инженер
113 / 110 / 65
Регистрация: 18.09.2014
Сообщений: 337
20.11.2014, 17:39 #3
Лучший ответ Сообщение было отмечено Leo008 как решение

Решение

Leo008, подразумевается, что "константное" в этом контексте имеется в виду "известное на этапе компиляции" (если ошибаюсь, поправьте). Если вы хотите создать массив с нужным размером, можете воспользоваться динамическими массивами. А можете использовать gcc, там можно объявлять статические массивы переменной длины
1
MrGluck
Модератор
Эксперт CЭксперт С++
7980 / 4861 / 1422
Регистрация: 29.11.2010
Сообщений: 13,234
20.11.2014, 19:21 #4
это ещё называется VLA, входит в стандарт С99, в С++ так и не прижился( Но поддерживается gcc
1
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4371 / 2346 / 654
Регистрация: 18.10.2014
Сообщений: 3,996
20.11.2014, 21:14 #5
Лучший ответ Сообщение было отмечено Leo008 как решение

Решение

Цитата Сообщение от 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
Привет! Вот еще темы с решениями:

Добрый вечер! При отладки следующая ошибка (вложение). Как исправить? VS2015
#define _CRT_SECURE_NO_WARNINGS #include <locale.h> #include <stdio.h>...

Изменения константного значения
Всем привет, вопрос такой. Пытаюсь разобраться с приведением типов, в частности...

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

Инициализация константного члена класса с проверкой значения
Допустим есть класс константным членом class a{ const int i; public: ...


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

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

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