Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2016, 22:01   #1
прямИСТ
Пользователь
 
Аватар для прямИСТ
 
Регистрация: 03.06.2016
Сообщений: 10
По умолчанию Динамическое выделение памяти для двумерного массива в СИ++

int **mas = new int *[x];

for (int i = 0; i < x; i++) {
mas[i] = new int [y];
Здравствуйте! можете объяснить, вот эту строчку mas[i] = new int [y];. Почему именно так???? :conf used: Почему, если mas - указатель на указатель(это понятно!), то mas[i] - это просто указатель? И почему тут динамическая память не выделяется так: int *mas[i] = new int[y]????
прямИСТ вне форума Ответить с цитированием
Старый 17.11.2016, 22:16   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Почему именно так????
Что вас смущает?

Цитата:
то mas[i] - это просто указатель?
ну да, вы ж не зря new пишите...

Цитата:
И почему тут динамическая память не выделяется так: int *mas[i] = new int[y]????
Имено так и выделяется... или вас смущает отсутствие int* ? Ну так тип вы выше объявили. Вас же не смущает, что если объявить char t[12], то потом пишется t[1] = 'a', а не char t[1] = 'a'. Или все-таки смущает?
p51x вне форума Ответить с цитированием
Старый 18.11.2016, 01:09   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от прямИСТ Посмотреть сообщение
Почему, если mas - указатель на указатель(это понятно!), то mas[i] - это просто указатель?
В С/С++ с массивами весьма интересный прикол в том, что их как бы нет) точнее, это в др. языках они как бы есть и происходит более строгая проверка кода, а С/С++ выражение "mas[i]" эквивалентно " *( mas + i)", которое развернётся в ещё более жуткое выражение с указателями
Самое важно - это та * перед скобкой.... всё оно означает типа "взять i-ое значение из массива mas"... если mas - указатель массив на указатель, то i-ое значение - это просто указатель уже

P. s. delete не забудь потом вызвать
GreenWizard вне форума Ответить с цитированием
Старый 19.11.2016, 15:13   #4
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Нет ничего лучше. чем разобраться самому.

http://prog-cpp.ru/cpp-newdelete/
Мановар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое выделение памяти для массива[C++] Xezon Помощь студентам 6 12.10.2014 09:26
ДИНАМИЧЕСКОЕ ВЫДЕЛЕНИЕ ПАМЯТИ ДЛЯ ДВУМЕРНЫХ МАССИВОВ Svetka.beam Общие вопросы C/C++ 1 26.05.2014 20:46
Динамическое выделение памяти Devdev12 Общие вопросы C/C++ 13 02.08.2013 10:25
Распределение памяти. Динамическое выделение памяти с++ Tolian92 Помощь студентам 8 14.05.2012 21:44
Динамическое выделение памяти FW-TOT Общие вопросы C/C++ 2 19.12.2008 00:42