|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.10.2011, 18:27 | #1 |
Регистрация: 14.10.2011
Сообщений: 3
|
Выражение должно иметь константное значение? Си
Обязательно ли при инициализации статического массива индекс должен быть константным значением?
К примеру создаем массив из N элементов. int x; scanf("%d", &x); int array[x]; Pelles C данный код пропускает, а MVS2010 выдает ошибку, что "х" не является константным значением. Всегда считал, что инициализировать не динамический массив, при работе программы, с помощью не константной переменной нельзя. Или я что то путаю? Можно ли прокомментировать данную ситуацию касательно применения в C и C++, а также хотел бы ссылку, где это описано в стандарте. Спасибо. |
14.10.2011, 18:59 | #2 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
По стандарту инициализировать динамический массив надо так
Код:
Форматируйте код, будьте людьми.
|
14.10.2011, 20:24 | #3 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
В последнем стандарте Си (C99) введены массивы переменной длины, это позволяет указывать размерность массива не-константой.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
14.10.2011, 20:35 | #4 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Цитата:
Что касается С++, то там значение самого крайнего правого индекса должно быть констатным выражением.
Со мной можно встретиться на www.clipper.borda.ru
|
|
14.10.2011, 21:15 | #5 | |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Цитата:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
|
14.10.2011, 21:28 | #6 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Цитата:
int a[][ 3 ] = { 1, 2, 3, 4, 5, 6 }; То есть размер правого индекса не является константным выражением. Выражение просто может отсутствовать.
Со мной можно встретиться на www.clipper.borda.ru
Последний раз редактировалось Сыроежка; 14.10.2011 в 21:31. |
|
14.10.2011, 22:12 | #7 | ||
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Цитата:
Цитата:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
начальное значение ссылки на левосторонний параметр должно быть левосторонним значением | Dimarik | Общие вопросы C/C++ | 3 | 03.03.2011 23:14 |
Если y – вещественная переменная, а n – целая, то оператор присваивания какой будет иметь вид? | Naruto63 | Помощь студентам | 6 | 23.11.2009 16:30 |
строковое выражение числа должно быть переведено в вещественный тип | Wi1D | Помощь студентам | 8 | 09.02.2009 18:16 |
значение получившегося выражения должно быть равно заданному целому S | Elm0 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 18.01.2008 00:13 |