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

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

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

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

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

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

Двойной указатель - C++
Это не совсем C++ вроде, а просто C, но поясните, пожалуйста, зачем в коде в строчку **sums=NULL используется двойной указатель? ...

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

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Функция, принимающая указатель и число байт и выделяющая память под указатель - C++
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и число байт и выделяющую память под...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Как правильно удалять выделенную память под указатель на указатель? - C++
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; void sort_1(const...

5
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,533
Завершенные тесты: 1
17.09.2013, 16:47 #2
Лев Борисов, покажите как выделяли. Так нагляднее будет.
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
17.09.2013, 16:48 #3
Если память под каждый массив A[i] выделялась динамически, как-нить в духе
C++
1
2
for (i=0; i<N; i++)
        A[i] = new int[100500];
то и освобождать эту память нужно с помощью delete [].
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
17.09.2013, 16:52 #4
Цитата Сообщение от Лев Борисов Посмотреть сообщение
для чего необходимо ставить [] в первом случае для очистки памяти, выделенной ранее для двумерного динамического массива.
Потому что двумерный массив - это по сути массив массивов. А для освобождения памяти выделенной под массив (оператор new[]), нужно и освобождать ее как для массива (оператор delete[]).
1
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. Надеюсь не запутал в конец.
1
Лев Борисов
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];
В принципе-то мне понятна суть, синтаксис только лишь запутал.
Спасибо всем
0
17.09.2013, 20:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2013, 20:40
Привет! Вот еще темы с ответами:

Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель - C++
Всем привет, встретил в книге такой пример добавления узла в дерево: typedef struct tree { int data; tree *left, *right,...

Передача умного указателя в функцию принимающую указатель на указатель - C++
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Объяснить работу функции, возвращающей указатель на указатель на char - C++
Добрый день! Сможете объяснить что означает запись char **InputFile(int &amp;strings);? Почему именно двойное **? Буду очень благодарна...

Функция принимает указатель на void и возвращает указатель на int - C++
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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