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

Инициализация массива длинны N - C++

Восстановить пароль Регистрация
 
xLGSx
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 6
26.05.2012, 21:18     Инициализация массива длинны N #1
Требуется задать массив с Энным количеством членов, n вводится с клавиатуры.
При попытке создания массива
C++ (Qt)
1
2
3
4
5
...
int n;
scanf("%d",&n);
А[n]
...
выдается ошибка "C2057: требуется константное выражение"
пробуем так:
C++ (Qt)
1
2
3
4
5
6
...
int n;
scanf("%d",&n);
int const g = n;
А[g]
...
снова ошибка "C2057: требуется константное выражение",
однако
C++ (Qt)
1
2
3
4
...
int const g = 10;
А[g]
...
работает корректно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2012, 21:18     Инициализация массива длинны N
Посмотрите здесь:

C++ Инициализация массива
Инициализация массива C++
инициализация массива C++
Инициализация массива C++
Инициализация массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
26.05.2012, 21:33     Инициализация массива длинны N #2
Массив в переменными границами должен быть динамическим.

C++
1
2
3
4
5
6
int *Arr;
int n;
    
     scanf("%d",&n);
 
     Arr=new int[n];
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
26.05.2012, 21:43     Инициализация массива длинны N #3
В сишном стиле:
C
1
2
3
4
int n;
scanf("%d",&n);
int *Arr = (int*) calloc (n,sizeof(int)); /* выделяем память */
free(Arr); /* освобождаем память*/
xLGSx
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 6
26.05.2012, 22:02  [ТС]     Инициализация массива длинны N #4
Цитата Сообщение от Catstail Посмотреть сообщение
Массив в переменными границами должен быть динамическим.

C++
1
2
3
4
5
6
int *Arr;
int n;
    
     scanf("%d",&n);
 
     Arr=new int[n];
Спасибо, все работает.
Сетевой Боб
1 / 1 / 0
Регистрация: 01.02.2013
Сообщений: 28
27.02.2013, 00:19     Инициализация массива длинны N #5
Скажите пожалуйста, по какой причине массиву не удаётся присвоить значение после объявления переменной?

Например:

C++
1
2
3
4
char a[10] = "privet"; / - работает
 
char a[10];
a = "privet"; / - не работает
olya7
476 / 293 / 91
Регистрация: 18.02.2013
Сообщений: 684
27.02.2013, 00:23     Инициализация массива длинны N #6
Цитата Сообщение от Сетевой Боб Посмотреть сообщение
char a[10] = "privet";
инициализация символьного массива при объявлении, если так не получилось сделать, то символы вводяться в массив посимвольно
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
27.02.2013, 10:45     Инициализация массива длинны N #7
Цитата Сообщение от Сетевой Боб Посмотреть сообщение
по какой причине массиву не удаётся присвоить значение после объявления переменной
- по причине синтаксиса С/С++
а вот так:

C++
1
2
   char a[10];
   strcpy(a,"привет");
скорее всего, сработает.
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
27.02.2013, 11:52     Инициализация массива длинны N #8
Цитата Сообщение от Catstail Посмотреть сообщение
- по причине синтаксиса С/С++
При чем тут синтаксис. Просто после объявления массива, к примеру,
C++
1
int arr[5];
arr суть константа. Поэтому присвоить ей что-то нельзя. В то время, как область памяти по адресу - не является константной, если иное не оговорено при объявлении.
C++
1
const int arr[5] = { 0, 0, 0 };
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
27.02.2013, 12:16     Инициализация массива длинны N #9
Цитата Сообщение от ITcrusader Посмотреть сообщение
При чем тут синтаксис. Просто после объявления массива, к примеру,
Код C++
1
int arr[5];
arr суть константа.
- это и есть синтаксис
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 14:23     Инициализация массива длинны N
Еще ссылки по теме:

C++ Разбитие массива на некое количество подмассивов одинаковой длинны
Инициализация массива C++ C++
Классы. Метод изменения длинны массива C++

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

Или воспользуйтесь поиском по форуму:
aLarman
27.02.2013, 14:23     Инициализация массива длинны N
  #10

Не по теме:

Цитата Сообщение от ITcrusader Посмотреть сообщение
Просто после объявления массива, к примеру,

C++
1
int arr[5];
arr суть константа.
я бы поспорил насчет константности

Yandex
Объявления
27.02.2013, 14:23     Инициализация массива длинны N
Ответ Создать тему
Опции темы

Текущее время: 19:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru