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

Динамический и статический массив (вариант инициализации)

08.05.2019, 12:16. Показов 1077. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Прошу помочь разобраться :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    int arraySize = 0;
    
    cout << "Enter array size:" << endl;
    cin >> arraySize;
    
    int **arrayNew = new int* [arraySize];
 
 
    int array[arraySize][arraySize];
 
    for (int i = 0; i < arraySize; i++) {
 
        for (int j = 0; j < arraySize; j++) {
            
            int randN = rand() % 100;
            
            array[i][j] = randN;
 
            cout << array[i][j] << "\t";
        }
        cout << endl;
    }
Пользователь вводит размер массива - это считается динамическим массивом(по логике).
Вопрос - почему статический массив так же может создаться и заполнится. (Я проверял - все работает).
Важно понять какие будут последствия. Ведь я не выделял динамическую память, а статический массив думал, что он размером 0 как я понимаю.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2019, 12:16
Ответы с готовыми решениями:

Динамический и статический массив
Подскажите, в чем разница. Имеется статический массив, который просто задается: long mas = { 0 }; Т.е. просто вставляем массив...

Переделать статический массив в динамический
Помогите переделать статический массив в динамический. #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using...

Автоматический, статический, динамический массив
Всем хай! Сходу к делу! Мне казалось, что автоматический и статический массив - синонимы, т е это массивы, размер которых известен на...

3
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
08.05.2019, 12:31
Цитата Сообщение от Goodbad Посмотреть сообщение
Вопрос - почему статический массив так же может создаться и заполнится.
Из-за расширения компилятора, которое называется VLA.
Цитата Сообщение от Goodbad Посмотреть сообщение
(Я проверял - все работает).
Только на тех компиляторах, где это разрешено, смотри выше.
Цитата Сообщение от Goodbad Посмотреть сообщение
Важно понять какие будут последствия.
Никаких, кроме не переносимости. Мы просто двигаем указатель стека не на константу, а на переменную.
Цитата Сообщение от Goodbad Посмотреть сообщение
Ведь я не выделял динамическую память, а статический массив думал, что он размером 0 как я понимаю.
Что за бред? Код в студию тогда.

P.S. С++ не поддерживает VLA, будьте осторожны это не переносимо.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.05.2019, 12:37
Лучший ответ Сообщение было отмечено Goodbad как решение

Решение

Goodbad, размер статического массива должен быть известен на этапе компиляции. то есть задавать
размер статического с клавиатуры - не по стандарту С++. если Ваш компилятор работает с таким кодом, говорит
о том, что он (Ваш компилятор) поддерживает нестандартные расширения.

т.е. если размер задаёте с клавиатуры применяйте только динамический массив:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n;
    cout << "n="; cin >>n;
    
      int **a = new int*[n];
    for (int i = 0; i < n; i++)
         a[i]=new int[n];
    
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < n; j++)
    {
      a[i][j]=rand()%9+ 1;
      cout <<a[i][j]<<" ";
    }
    cout <<"\n";
    }
 
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
 
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 08.05.2019
Сообщений: 2
08.05.2019, 13:02  [ТС]
Всем спасибо за ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.05.2019, 13:02
Помогаю со студенческими работами здесь

Переделать статический массив в динамический
Помогите пожалуйста переделать статический массив в динамический #include &lt;iostream&gt; #include &lt;iomanip&gt; #define N 6 ...

Переделать статический массив в динамический
Помогите переделать статический массив в динамический #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include...

Двумерный массив (поменять статический массив на динамический)
Нужно поменять статический массив на динамический с выделением памяти #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...

Заменить в программе статический массив на динамический
Программа работает, но теперь нужно привести ее к виду, в котором участвует уже динамический массив. ЕСЛИ ВОЗМОЖНО не меняйте printf и...

Переделать статический массив структур в динамический
Имею структуру из 8 эл-ов (массивов чаров и 2 подструктуры). Имею исходные данные (5 штук, строк с ними) под эту структуру. Массив с этими...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru