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

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

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

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

17.09.2013, 16:38. Просмотров 567. Ответов 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, но поясните, пожалуйста, зачем в коде в строчку **sums=NULL используется двойной указатель? ...

Двойной указатель на объект класса - C++
Подскажите что означает следующее определение объекта класса. A **myA; где - A имя класса, а myA его объект. Мне не понятно что...

Освободить указатель на указатель - C++
class Interface { }; class Test : public Interface { }; void main() { Interface** s = new Interface*; for (int i =...

Двойной интеграл - C++
Всем доброго времени суток, прошу помочь решить мне двойной интеграл методом Монте Карло. Я сделал програму для интеграла первого порядка,...

Двойной факториал - C++
Здравствуйте, Товарищи. Поискал на форуме подобную задачку, увы, не нашел. Помогите составить программу (у меня КодБлокс) которая будет...

Двойной переворот - C++
помогите переписать на c++, это Delphi. {$APPTYPE CONSOLE} uses SysUtils; var x:array of word; n,i,a,b,c,d:word;

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,495
Завершенные тесты: 1
17.09.2013, 16:47     Двойной указатель #2
Лев Борисов, покажите как выделяли. Так нагляднее будет.
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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. Надеюсь не запутал в конец.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2013, 20:40     Двойной указатель
Еще ссылки по теме:

Двойной strtok - C++
Всем привет! Возник такой вопрос. В ходе решения одной задачи, связанной с разбиением строки на некоторые подмножества слов,...

двойной интеграл в С++ - C++
∫∫exp-r3*cos(ψ)*r*dr*dψ межи (0,1) и (0,π*2)

Двойной факториал - C++
Дано целое число N (&gt; 0). Найти двойной факториал N: N!! = N·(N–2)·(N–4)·… (последний сомножитель равен 2, если N — четное, и 1, если N...

Двойной оператор - C++
Если argc &gt;=2, то... присвоить 1-ому аргументу имя &quot;lena.jpg&quot;? Каково значение данной строки? const char* filename = argc &gt;=2 ? argv :...

Переопределение двойной индексации - C++
Подскажите, можно ли переопределить двойную индексацию для класса Matrix..никак не получается.. #include &lt;iostream&gt; #include...

Двойной факториал VS рекурсия - C++
Доброго времени суток. Программа которая считает двойной факториал есть: int df(int x) { if (x&lt;3) { return x; } ...


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

Или воспользуйтесь поиском по форуму:
Лев Борисов
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