0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
|
|
1 | |
Создание массива по Указателю на массив05.11.2010, 23:03. Показов 5608. Ответов 10
Метки нет (Все метки)
(к сведенью. пользую C++, версия Dev C++ 4.9.9.2)
Я создал указатель на массив: char (*e)[3]; Мне нужно создать по этому указателю массив с помощью new. Подскажите как это сделать. P.s. Знаю что имя массива это указатель на него, и что это изврат. Но этого требует лабораторная. Огромное спасибо за помощь.
0
|
05.11.2010, 23:03 | |
Ответы с готовыми решениями:
10
Копирование массива в массив по указателю Динамический массив массивов, realloc, размер по указателю на имя массива Заполнить массив М(10) случайными значениями. Присвоить указателю адрес начала размещения массива в памяти Заполнить массив М(10) случайными значениями. Организовать вывод на экран. Присвоить указателю адрес начала размещения массива в памяти |
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
05.11.2010, 23:07 | 2 |
char *e;
e = new char [100];
1
|
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
|
|
05.11.2010, 23:09 [ТС] | 3 |
Это создание обычного указателя и создание по нему массива).
А мне нужно именно создать массив по Указателю на массив, который и задан как указатель на массив. Спасибо за отклик.
0
|
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
05.11.2010, 23:14 | 4 |
Тут маленько другое. Вы создаетте динамический массив. И если при объявлении обычного массива, его размер дожен быть константой. То размером динамического массива может быть переменная. Например, вы сначала можете запросить у пользователя размер массива(или количество записей).
А потом создать массив, с нужным размером. Добавлено через 1 минуту Это и есть создание массива. Вы сначала создаете указатель типа char. А потом создаете массив из динамической памяти, указатель указывает на первый (если угодно нулевой) элемент массива
1
|
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
|
|
05.11.2010, 23:21 [ТС] | 5 |
Ахх... Огромное вам спасибо). Я не правильно читал задание лабораторной и пытался сделать непонятно что.
0
|
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
05.11.2010, 23:25 | 6 |
Не забудь добавить delete [] e; в конце программы. Освободите динамическую память. А char (*e)[3]; - если не ошибаюсь - объявление массива указателей.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
06.11.2010, 02:50 | 7 | |||||
Сообщение от RUSya82
массив указателей - это char *e[3];
если сделать *e[0] - будет взятие нулевого элемента массива e (это массив a) и взятие значения нулевого элемента массива a то есть они совпадут, но первое яснее
1
|
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
06.11.2010, 05:16 | 8 |
Не проще ли объявить указатель типа char, присвоить ему адрес 0-го элемента массива, и в дальнейшем обращаться с ним как с обычным массивом.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
06.11.2010, 05:26 | 9 | |||||
e++ выполнит переход на следующий массив из трёх элементов, тогда как p++, где p - просто указатель на нулевой элемент массива, выполнит переход на следующий элемент (на следующий символ) Добавлено через 2 минуты
1
|
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
06.11.2010, 09:30 | 10 |
Эт момент я как то упустил. Спасибо.
0
|
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
|
|
06.11.2010, 12:00 [ТС] | 11 |
Спасибо за разные варианты). Я упустил лекцию по этой теме и все это мне пригодится.
0
|
06.11.2010, 12:00 | |