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

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

Войти
Регистрация
Восстановить пароль
 
Лев Борисов
2 / 2 / 0
Регистрация: 14.02.2013
Сообщений: 99
#1

Двойной указатель - C++

17.09.2013, 16:38. Просмотров 547. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
for (i=0; i<N; i++)
        delete [] A[i];
    //Освобождение памяти для A
    delete []A;
Вопрос по синтаксису: для чего необходимо ставить [] в первом случае для очистки памяти, выделенной ранее для двумерного динамического массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2013, 16:38     Двойной указатель
Посмотрите здесь:

Указатель на указатель на функцию C++
C++ Указатель на указатель - разница способов
C++ Задача на указатели.Указатель на указатель.
Сделать указатель на указатель NULL C++
Двойной указатель C++
Преобразование в указатель на указатель на константу C++
Зачем использовать Указатель на указатель? C++
C++ Двойной указатель на объект класса
C++ Указатель на указатель, класс группа
C++ Указатель на указатель внутри структуры
Указатель на указатель заполнение матрицы C++
Указатель на указатель заполнение матрицы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5589 / 2623 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
17.09.2013, 16:47     Двойной указатель #2
Лев Борисов, покажите как выделяли. Так нагляднее будет.
John Prick
764 / 697 / 126
Регистрация: 27.07.2012
Сообщений: 1,988
Завершенные тесты: 3
17.09.2013, 16:48     Двойной указатель #3
Если память под каждый массив A[i] выделялась динамически, как-нить в духе
C++
1
2
for (i=0; i<N; i++)
        A[i] = new int[100500];
то и освобождать эту память нужно с помощью delete [].
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.09.2013, 16:52     Двойной указатель #4
Цитата Сообщение от Лев Борисов Посмотреть сообщение
для чего необходимо ставить [] в первом случае для очистки памяти, выделенной ранее для двумерного динамического массива.
Потому что двумерный массив - это по сути массив массивов. А для освобождения памяти выделенной под массив (оператор new[]), нужно и освобождать ее как для массива (оператор delete[]).
lipnev
60 / 60 / 1
Регистрация: 14.09.2013
Сообщений: 145
17.09.2013, 16:59     Двойной указатель #5
Двумерный динамический массив можно представить как массив одномерных массивов. То есть, если у тебя массив A[m][n], то это означает, что у тебя в каждом элементе A[i] содержится массив элементов A[i][n]. Например, если представить этот массив как столбцы и строки, то A[m] это будет первый столбец, а массив A[i][n] будет отдельной строкой. Поэтому ты сначала очищаешь память внутренних массивов, а затем главного внешнего.
Динамический массив отличается от простого статического тем, что ты можешь иметь одномерные массивы любой желаемой длины. То есть ты можешь создать такой массив A[2][2], который будет состоять из 4 элементов, а потом добавить в него элементы или удалить. То есть, допустим в массив A[0] будет содержать внутри себя массив из 5 элементов, а массив A[1] допустим 3. Надеюсь не запутал в конец.
Лев Борисов
2 / 2 / 0
Регистрация: 14.02.2013
Сообщений: 99
17.09.2013, 20:40  [ТС]     Двойной указатель #6
Динамически выдел:
C++
1
2
3
4
int **A,
A = new int *[N];
for (i=0; i<N; i++)
    A[i]= new int [M];
В принципе-то мне понятна суть, синтаксис только лишь запутал.
Спасибо всем
Yandex
Объявления
17.09.2013, 20:40     Двойной указатель
Ответ Создать тему
Опции темы

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