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

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

Войти
Регистрация
Восстановить пароль
 
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 101
#1

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

20.09.2013, 10:50. Просмотров 718. Ответов 16
Метки нет (Все метки)

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

Указатель на двумерный массив указателей - C++
char* err = {{"abc"}, {"def"}}; char ***ptr; ptr = (char ***)err; printf("%s, %s", *err + 2, *ptr + 2);Добрый день всем, есть...

Задача на двумерный массив с использованием указателей - C++
В двумерном массиве найти строку с наименьшим произведением элементов. Размерность массива 5x6. Произведение определять с помощью...

Передать двумерный массив указателей в функцию - C++
Здравствуйте) У меня есть класс Tile и структура Room. Примерно они выглядят таким образом: class Tile { private: ...

Запись и чтение массива указателей в двумерный массив - C++
Подскажите пожалуйста, вот у меня генерируется двумерный массив в массиве указателей (int**), как мне записать массив указателей в другой...

Двумерный массив указателей присвоить другому указателю - C++
char *tp = { "bb", "vv", "zz", "kk", "" }; char ***mp = tp; // вот здесь ошибка что нужно прописать чтоб...

Ввести двумерный массив А (5*2).Определить в нем сумму модулей отрицательных элементов с использованием указателей. - C++
Ввести двумерный массив А (5*2).Определить в нем сумму модулей отр элементов с использованием указателей.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 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
Сообщений: 101
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
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 13:07     Двумерный массив указателей #5
Его не надо освобождать, он не динамический. Нельзя применять оператор delete к тому, к чему ты не применял оператор new.
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 101
20.09.2013, 13:09  [ТС]     Двумерный массив указателей #6
А мне нужен двумерный массив созданный через new . Что-бы создать его заново и пользоватся чистым массивом. Такое реально ?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
20.09.2013, 13:14     Двумерный массив указателей #7
В первом посте ты писал про статический массив. Если нужен чистый - просто очисть его.
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 101
20.09.2013, 13:21  [ТС]     Двумерный массив указателей #8
И все же динамический За одно и его размером игратся
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 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
Сообщений: 101
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
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 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
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,012
Записей в блоге: 1
20.09.2013, 14:09     Двумерный массив указателей #12
Что означает сообщение об ошибке?
HoseMose
1 / 1 / 0
Регистрация: 27.08.2013
Сообщений: 101
20.09.2013, 14:15  [ТС]     Двумерный массив указателей #13
Думаю что ошибка свидетельствует , об ошибке. Думаю копилятор глуп

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

Как правильно создать двумерный массив указателей с использованием calloc? и ввод данных в него - C++
Как правильно создать двумерный массив указателей с использованием calloc и ввести в него данные?

Массив указателей на массив строк и сортировка массива указателей - C++
Добрый день. Поступил вопрос. Есть задача. У нас встроенный массив char mass;.Мы вводим строки до тех пор, пока не будет заполнен массив...

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

массив указателей - C++
int abc=0; for (int i=0;i&lt;resultFile.count();i++){ for (int j=0;j&lt;_H400_H419.count();j++){ ...


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

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

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