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

Двумерный массив указателей - C++

Восстановить пароль Регистрация
 
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 82
20.09.2013, 10:50     Двумерный массив указателей #1
Добрый день. Создаю двумерный массив для хранения символов.
C++ (Qt)
1
char MASs[255][255]
.
Вопрос в том что после заполнения массива нужно высвободить память занятую им, или же очистить его.
Как я себе это представляю:
Нужно объявить массив указателей.
Как объявить двумерный символьный массив ? И как потом сдеалть ему delete ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2013, 10:50     Двумерный массив указателей
Посмотрите здесь:

C++ Массив указателей
Ввести двумерный массив А (5*2).Определить в нем сумму модулей отрицательных элементов с использованием указателей. C++
массив указателей C++
Как правильно создать двумерный массив указателей с использованием calloc? и ввод данных в него C++
C++ Массив указателей
C++ массив указателей
Передать двумерный массив указателей в функцию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1778 / 1153 / 223
Регистрация: 16.05.2013
Сообщений: 3,041
Записей в блоге: 5
Завершенные тесты: 1
20.09.2013, 11:05     Двумерный массив указателей #2
Да также как и со строкой, только delete прописывать для каждой строки на которые указывает массив указателей.
C++
1
2
for(int j =0; j < size; j++)
    ptrArray[j] = new char[len + 1];
C++
1
2
for(int j =0; j < size; j++)
    delete [] ptrArray[j];
XpertVision
17 / 17 / 3
Регистрация: 14.06.2012
Сообщений: 150
20.09.2013, 11:08     Двумерный массив указателей #3
Не уверен и нету возможности проверить так что попробуйте скомпилировать сами.

C++
1
2
3
4
5
char* Massiv = new mass[255][255];//обьявление массива указателей
 
cin>>Massiv[23][5];//пример работы с элементами
 
delete [][] Massiv;//удаление массива указателей.
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 82
20.09.2013, 12:56  [ТС]     Двумерный массив указателей #4
[QUOTE=Ilot;5077244]Да также как и со строкой, только delete прописывать для каждой строки на которые указывает массив указателей.
C++
1
2
for(int j =0; j < size; j++)
    ptrArray[j] = new char[len + 1];
Не понял как он объявляестя ? Прокоментируйет пожалуйста для чайников.
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 13:07     Двумерный массив указателей #5
Его не надо освобождать, он не динамический. Нельзя применять оператор delete к тому, к чему ты не применял оператор new.
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 82
20.09.2013, 13:09  [ТС]     Двумерный массив указателей #6
А мне нужен двумерный массив созданный через new . Что-бы создать его заново и пользоватся чистым массивом. Такое реально ?
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 13:14     Двумерный массив указателей #7
В первом посте ты писал про статический массив. Если нужен чистый - просто очисть его.
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 82
20.09.2013, 13:21  [ТС]     Двумерный массив указателей #8
И все же динамический За одно и его размером игратся
Ilot
Модератор
Эксперт С++
1778 / 1153 / 223
Регистрация: 16.05.2013
Сообщений: 3,041
Записей в блоге: 5
Завершенные тесты: 1
20.09.2013, 13:46     Двумерный массив указателей #9
[QUOTE=HoseMose;5077634]
Цитата Сообщение от Ilot Посмотреть сообщение
Да также как и со строкой, только delete прописывать для каждой строки на которые указывает массив указателей.
C++
1
2
for(int j =0; j < size; j++)
    ptrArray[j] = new char[len + 1];
Не понял как он объявляестя ? Прокоментируйет пожалуйста для чайников.
Этот код выделяет место в памяти для размещения массива строк длиной len. ptrArray[j] это указатель на твою строку. Например у тебя есть строка str:
C++
1
char str[] = "бла бла бла";
Тогда присвоение будет выглядеть так:
C++
1
strcpy(ptrArray[j],str);
Или можно попросить ввести пользователя. И т.д.
И все же динамический За одно и его размером игратся
Если только делать массив списком посимвольно.
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 82
20.09.2013, 14:03  [ТС]     Двумерный массив указателей #10
C++ (Qt)
1
2
3
4
char *Matrix = new char[10];
 
for(int j=0; j < 10; j++)
    Matrix[j] = new char[10];
При компиляции ошибка : error: invalid conversion from ‘char*’ to ‘char’

Добавлено через 2 минуты
C++ (Qt)
1
2
3
4
char **Matrix = new char*[10];
 
for(int j=0; j < 10; j++)
    Matrix[j] = new char[10];
Переделал заработало. Вопрос : какая разница между **Matrix и *Matrix , зачем две звездочик ? Это типо супер указтель
Ilot
Модератор
Эксперт С++
1778 / 1153 / 223
Регистрация: 16.05.2013
Сообщений: 3,041
Записей в блоге: 5
Завершенные тесты: 1
20.09.2013, 14:08     Двумерный массив указателей #11
Цитата Сообщение от HoseMose Посмотреть сообщение
C++ (Qt)
1
char *Matrix = new char[10];
При компиляции ошибка : error: invalid conversion from ‘char*’ to ‘char’
C++
1
char*Matrix[];
И будет вам счастие.
p.s. Помните, что вы объявляете массив указателей.

Добавлено через 3 минуты
Переделал заработало. Вопрос : какая разница между **Matrix и *Matrix , зачем две звездочик ? Это типо супер указтель
Это указатель на указатель. Хм... вроде бы должно быть понятно.
zer0mail
2220 / 1903 / 192
Регистрация: 03.07.2012
Сообщений: 6,811
Записей в блоге: 1
20.09.2013, 14:09     Двумерный массив указателей #12
Что означает сообщение об ошибке?
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 82
20.09.2013, 14:15  [ТС]     Двумерный массив указателей #13
Думаю что ошибка свидетельствует , об ошибке. Думаю копилятор глуп

Добавлено через 30 секунд
lLot спасибо огромное.
Ilot
Модератор
Эксперт С++
1778 / 1153 / 223
Регистрация: 16.05.2013
Сообщений: 3,041
Записей в блоге: 5
Завершенные тесты: 1
20.09.2013, 14:18     Двумерный массив указателей #14
Цитата Сообщение от zer0mail Посмотреть сообщение
Что означает сообщение об ошибке?
Нельзя преобразовать указатель на char в char.
zer0mail
2220 / 1903 / 192
Регистрация: 03.07.2012
Сообщений: 6,811
Записей в блоге: 1
20.09.2013, 14:31     Двумерный массив указателей #15
Цитата Сообщение от Ilot Посмотреть сообщение
Нельзя преобразовать указатель на char в char.
Я это знаю - мне хотелось, чтобы ТС сам это раскопал.
Ilot
Модератор
Эксперт С++
1778 / 1153 / 223
Регистрация: 16.05.2013
Сообщений: 3,041
Записей в блоге: 5
Завершенные тесты: 1
20.09.2013, 14:49     Двумерный массив указателей #16
Цитата Сообщение от zer0mail Посмотреть сообщение
Я это знаю - мне хотелось, чтобы ТС сам это раскопал.
Так это не ко мне был вопрос?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2013, 15:52     Двумерный массив указателей
Еще ссылки по теме:

Указатель на двумерный массив указателей C++
Массив указателей C++
Запись и чтение массива указателей в двумерный массив C++
Задача на двумерный массив с использованием указателей C++
Двумерный массив указателей присвоить другому указателю C++

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

Или воспользуйтесь поиском по форуму:
zer0mail
2220 / 1903 / 192
Регистрация: 03.07.2012
Сообщений: 6,811
Записей в блоге: 1
20.09.2013, 15:52     Двумерный массив указателей #17
Цитата Сообщение от Ilot Посмотреть сообщение
Так это не ко мне был вопрос?
Нет
Yandex
Объявления
20.09.2013, 15:52     Двумерный массив указателей
Ответ Создать тему
Опции темы

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