Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 17.06.2014
Сообщений: 10

Можно ли инициализировать динамический массив не используя цикл?

08.08.2014, 21:35. Показов 1649. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Когда создавали статический массив, можно было сделать так:
C++ (Qt)
1
int array[10]={1,5,14,23,32,45,67};
Можно ли такое же сделать с динамическим массивом?
Со строками получается, а с произвольным массивом выдает ошибки.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.08.2014, 21:35
Ответы с готовыми решениями:

Как инициализировать значениями динамический двумерный массив ?
Есть функция: static int ** MatrixMultiplication(int ** A, int ** B, int size = 4); Также есть namespace с двумя матрицами: ...

Создать динамический массив объектов, инициализировать его
Создать динамический массив объектов, инициализировать его. Организовать поиск элемента в массиве по заданному значению. Создать иерархии...

Как правильно инициализировать динамический массив пользовательского класса
Допустим есть класс: class A { public: A(); A(int a, int b, int c) {} }; и нам нужно инициализировать динамический...

17
 Аватар для orange_fox
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189
08.08.2014, 21:39
А как вы строки инициализировали, можно пример?
0
1 / 1 / 0
Регистрация: 17.06.2014
Сообщений: 10
08.08.2014, 21:58  [ТС]
C++
1
2
char* Nm=new char[20];
    Nm="Hello world";
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,030
Записей в блоге: 1
08.08.2014, 22:01
Tohitch, браво, маэстро!
0
 Аватар для orange_fox
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189
08.08.2014, 22:07
Лучший ответ Сообщение было отмечено Tohitch как решение

Решение

А по теме - нет. Можно ручками заполнять каждое число, можно из stl контейнеров или обычных массивов копировать.
C++
1
2
3
4
5
    vector<int> V = { 1, 2, 3 };
    int* a = new int[3];
    int b[3] = { 4, 5, 6 };
    copy(V.begin(), V.end(), a);
    copy(b, b+3, a);
Добавлено через 2 минуты
Tohitch, Вы присвоили указателю на char адрес первого символа константной строки "Hello world"
Нужно делать так:
C++
1
2
char* str = new char[20]
strcpy(str, "Hello, world!");
0
1 / 1 / 0
Регистрация: 17.06.2014
Сообщений: 10
08.08.2014, 22:12  [ТС]
Спасибо, до векторов еще не дочитал. А что такое stl контейнер?
0
 Аватар для orange_fox
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189
08.08.2014, 22:17
STL - стандартная библиотека шаблонов c++
Контейнеры - это часть библиотеки, отвечающая за хранение данных. Вектор - один из таких контейнеров. Существует 7 основных контейнеров. Вот краткая информация о них.
1
1 / 1 / 0
Регистрация: 17.06.2014
Сообщений: 10
08.08.2014, 22:19  [ТС]
Значит "Hello world" находится не в выделившемся массиве? А где тогда? Простите за глупые вопросы, я полный новичёк в программировании.
0
 Аватар для orange_fox
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189
08.08.2014, 22:22
Лично я без понятия. Уверен, что где-то в стеке в оперативной памяти.
0
11 / 11 / 3
Регистрация: 08.03.2014
Сообщений: 70
08.08.2014, 22:26
Цитата Сообщение от Tohitch Посмотреть сообщение
Значит "Hello world" находится не в выделившемся массиве? А где тогда? Простите за глупые вопросы, я полный новичёк в программировании.
Имя любого масива без индексов это указатель на первый элемент. Если конкретнее, то в этой ситуации Nm это указатель на первый элемент в выделеном блоке памяти.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.08.2014, 22:31
Цитата Сообщение от Gwini Посмотреть сообщение
В выделеном месте, но только в первом элементе динамического массива, т.к. имя любого масива без индексов это указатель на первый элемент. Если конкретнее, то в этой ситуации Nm это указатель на первый элемент в выделеном блоке памяти.
С чего бы это? http://ideone.com/tILs89
0
11 / 11 / 3
Регистрация: 08.03.2014
Сообщений: 70
08.08.2014, 22:37
Цитата Сообщение от Jewbacabra Посмотреть сообщение
С чего бы это?
да — ерунда, исправил
0
1 / 1 / 0
Регистрация: 17.06.2014
Сообщений: 10
08.08.2014, 22:44  [ТС]
Хм, так можно так делать или нет?

И почему?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.08.2014, 22:45
Tohitch, нельзя, используй предложенные выше варианты с copy или strcpy
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
08.08.2014, 22:47
Цитата Сообщение от Tohitch Посмотреть сообщение
Можно ли такое же сделать с динамическим массивом?
Можно в C++11:
C++
1
int * t = new int[20]{1,2,3,4,5};
2
11 / 11 / 3
Регистрация: 08.03.2014
Сообщений: 70
08.08.2014, 22:48
Лучший ответ Сообщение было отмечено Tohitch как решение

Решение

Цитата Сообщение от Tohitch Посмотреть сообщение
И почему?
потому что ты копируешь адрес строки, а не саму строку в выделеный блок памяти. Из за этого потом будут пробелмы с delete-ом т.к. будет попытка удаления памяти не из кучи.
1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.08.2014, 22:50
Цитата Сообщение от Tohitch Посмотреть сообщение
И почему?
во-первых потому что строковый литерал, тогда уж делать так:
C++
1
const char* str = "Hello world";
во вторых утечка памяти и непойми что при освобождении памяти
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
08.08.2014, 22:50
Цитата Сообщение от orange_fox Посмотреть сообщение
Уверен, что где-то в стеке в оперативной памяти.
Если речь про строковые литералы, то не на стеке. В секции констант в бинарнике, как правило.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.08.2014, 22:50
Помогаю со студенческими работами здесь

Можно ли как-то инициализировать массив?
Можно ли как-то инициализировать массив ar? class digit { int a, b; public: digit (int a_, int b_) { a=a_; b=b_; }

Как инициализировать динамический массив в отдельной функции?
Здравствуйте, хочу инициализировать три динамических массива отдельной функцией. int main(int argc, char* argv){ ushort *big1=0,...

Можно ли создать,инициализировать,использовать массив в 1 строчке
Просто иногда хочется написать return new int={i,j}; может быть всё таки есть способ как то избежать подобной записи int...

Цикл и динамический массив
1.Написать программу с использованием циклов. Массивы не использовать. Вводить с клавиатуры буквы, пока не будет введен символ, не...

Цикл for и динамический массив
Допустим обьявлен динамический массив А. Как сделать так что бы из цикла for (i=1;i&lt;=n*10;i++) передать значения в массив? (n...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru