Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/27: Рейтинг темы: голосов - 27, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
1

Создание массива по Указателю на массив

05.11.2010, 23:03. Показов 5608. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
(к сведенью. пользую C++, версия Dev C++ 4.9.9.2)
Я создал указатель на массив:
char (*e)[3];
Мне нужно создать по этому указателю массив с помощью new.
Подскажите как это сделать.

P.s. Знаю что имя массива это указатель на него, и что это изврат. Но этого требует лабораторная.

Огромное спасибо за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2010, 23:03
Ответы с готовыми решениями:

Копирование массива в массив по указателю
Доброго времени суток всем! Пишу морской бой, мой супер проект заглох, встал, застыл, затупил,...

Динамический массив массивов, realloc, размер по указателю на имя массива
Arr = (double**)realloc(Arr, SizeH * sizeof(**Arr)); j = 0; while (j < SizeH) Arr =...

Заполнить массив М(10) случайными значениями. Присвоить указателю адрес начала размещения массива в памяти
Заполнить массив М(10) случайными значениями. Организовать вывод на экран. Присвоить указателю...

Заполнить массив М(10) случайными значениями. Организовать вывод на экран. Присвоить указателю адрес начала размещения массива в памяти
Заполнить массив М(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]; - если не ошибаюсь - объявление массива указателей.
это указатель на массив из трёх элементов символьного типа

массив указателей - это char *e[3];

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void)
{
    char (*e)[3];
    char a[3] = { 0 };
 
    e = &a;
 
    printf("%d" "\n", (*e)[0]);
    
    return 0;
}
если сделать (*e)[0] - будет переход к массиву a и взятие значения нулевого элемента массива a
если сделать *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 минуты
C
1
2
3
4
    char arr[10][3];
    char (*e)[3] = &arr[0];
 
    /* e++ перейдёт с arr[0] на arr[1] */
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2010, 12:00
Помогаю со студенческими работами здесь

Заполнить массив У(10) случайными значениями. Организовать вывод на экран. Присвоить указателю адрес начала размещения массива в памяти
Заполнить массив У(10) случайными значениями. Организовать вывод на экран. Присвоить указателю...

Заполнить массив А(10) случайными значениями. Организовать вывод на экран. Присвоить указателю адрес начала размещения массива в памяти. Напечатать зн
Заполнить массив А(10) случайными значениями. Организовать вывод на экран. Присвоить указателю...

Заполнить массив случайными значениями. Присвоить указателю адрес начала размещения массива в памяти. Напечатать значения каждого 5-го элемента
Заполнить массив М(10) случайными значениями. Организовать вывод на экран. Присвоить указателю...

Заполнить массив В(10) случайными значениями. Организовать вывод на экран. Присвоить указателю адрес начала размещения массива в памяти. Напечатать зн
Заполнить массив В(10) случайными значениями. Организовать вывод на экран. Присвоить указателю...

Заполнить массив Х(10) случайными значениями. Организовать вывод на экран. Присвоить указателю адрес начала размещения массива в памяти. Напечатат
Заполнить массив Х(10) случайными значениями. Организовать вывод на экран. Присвоить указателю...

Создание объекта произвольного класса по указателю на базовый класс
Есть некий абстрактный базовый класс . Мы знаем , что от этого базового класса будет образовано...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru