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

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

Войти
Регистрация
Восстановить пароль
 
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Непонятки с размером массива - C++

14.09.2011, 20:44. Просмотров 551. Ответов 3
Метки нет (Все метки)

Почему так можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    int SIZE=10;
    char ch[10]={'a','b','c','d','e','f','g','h','i','\0'};
    for(int i=0;i<SIZE;i++)
     cout<<ch[i];
    cout<<endl<<endl;
 
    for(char *ptr=ch;*ptr!='\0';ptr++)
     cout<<*ptr;
 
    cout<<endl<<endl;
 
}
,а так нельзя:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    int SIZE=10;
    char ch[SIZE]={'a','b','c','d','e','f','g','h','i','\0'}; /*error: variable-sized object 'ch' may not be initialized|*/
    for(int i=0;i<SIZE;i++)
     cout<<ch[i];
    cout<<endl<<endl;
 
    for(char *ptr=ch;*ptr!='\0';ptr++)
     cout<<*ptr;
 
    cout<<endl<<endl;
 
}
Это я так походу дела на грабли вижу наступил и почему компилятор пишет что ch не может быть так инициализирована, он я так понимаю намекает на то чтобы я инициализацию делал пошаговую в цикле, но почему? Я ведь явно задаю размер массива перед этим и явно хочу его инициализировать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2011, 20:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Непонятки с размером массива (C++):

Элементы одного массива размером 10 элементов перенести в 2 массива - C++
Доброго времени суток,подскажите пожалуйста как решить задачу. Написать программу, копирующую последовательно элементы одного массива...

Скопировать элементы исходного массива в два других массива, размером вдвое меньше исходного - C++
/*Написать программу, копирующую последовательно элементы одного массива размером 10 элементов в 2 массива размером 5 элементов...

Пузырьковая сортировка с константным размером массива - C++
Здравствуйте! Объясните пожалуйста как так получается? есть массив в котором провожу пузырьковую сортировку... #include&lt;iostream&gt; ...

Из заданной матрицы A размером N*M получить матрицу В размером K*3 по правилу: первый столбец состоит из полож - C++
Из заданной матрицы A размером N*M получить матрицу В размером K*3 по правилу: первый столбец состоит из положительных элементов, второй...

Неизвестная ошибка(скорее всего с размером массива\памяти) - C++
Программа должна решать СЛУ методом Гаусса, не нужно конкретных значений, а просто свести к треугольному виду, и упростить(с...

Вывести на экран каждые три элемента массива размером 15 - C++
Как написать задачу? Вывести на экран каждые три элемента массива размером 15

3
Сыроежка
Заблокирован
14.09.2011, 20:48 #2
[QUOTE=Gepar;1984737]
Размерность массива должна быть константным выражением. То есть если вы замените определение

C++
1
    int SIZE=10;
на
C++
1
    const int SIZE=10;
то ошибка исчезнет.
1
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
14.09.2011, 20:50  [ТС] #3
Сыроежка, окай, но почему компилятор отказывается инициализировать таким образом мой массив? Потому что он не уверен что все данные которыми я хочу инициализировать массив влезут или чего?
0
Сыроежка
Заблокирован
14.09.2011, 20:59 #4
Цитата Сообщение от Gepar Посмотреть сообщение
Сыроежка, окай, но почему компилятор отказывается инициализировать таким образом мой массив? Потому что он не уверен что все данные которыми я хочу инициализировать массив влезут или чего?
Потому что неконстантное выражение может быть изменено, а для массива требуется знать его размер на этапе компиляции. Поэтому в стандарт введено положение, что размерность массива должна задаваться констатным выражением.
0
14.09.2011, 20:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2011, 20:59
Привет! Вот еще темы с ответами:

Написать программу формировании и вывода массива размером 3х6 - C++
Напишите программу формировании и вывода массива размером 3х6, каждые три последовательных элемента в строке которого ...

Можно ли коробку размером a\b\c упаковать в посылку размером r\s\t ? - C++
Условие:Можно ли коробку размером a\b\c упаковать в посылку размером r\s\t ? Углом коробку уложить нельзя. коробку упаковывается при...

Получится ли вернуть адрес на первый элемент массива вместе с размером? - C++
Из Main() вызывается функция, которая формирует массив и возвращает объект класса String в виде: &lt;адрес на первый элемент массива&gt; +...

Из массива символов размером 15 вывести на экран элементы с нечетным номером - C++
прошу помочь дело почти срочное:( задача №2 Из массива символов размером 15 вывести на экран элементы с нечетным номером задача №3 ...


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

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

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