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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.88
Zeth
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
05.11.2010, 23:03     Создание массива по Указателю на массив #1
(к сведенью. пользую C++, версия Dev C++ 4.9.9.2)
Я создал указатель на массив:
char (*e)[3];
Мне нужно создать по этому указателю массив с помощью new.
Подскажите как это сделать.

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

Огромное спасибо за помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
05.11.2010, 23:07     Создание массива по Указателю на массив #2
char *e;
e = new char [100];
Zeth
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
05.11.2010, 23:09  [ТС]     Создание массива по Указателю на массив #3
Это создание обычного указателя и создание по нему массива).
А мне нужно именно создать массив по Указателю на массив, который и задан как указатель на массив.
Спасибо за отклик.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
05.11.2010, 23:14     Создание массива по Указателю на массив #4
Тут маленько другое. Вы создаетте динамический массив. И если при объявлении обычного массива, его размер дожен быть константой. То размером динамического массива может быть переменная. Например, вы сначала можете запросить у пользователя размер массива(или количество записей).
А потом создать массив, с нужным размером.

Добавлено через 1 минуту
Это и есть создание массива. Вы сначала создаете указатель типа char. А потом создаете массив из динамической памяти, указатель указывает на первый (если угодно нулевой) элемент массива
Zeth
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
05.11.2010, 23:21  [ТС]     Создание массива по Указателю на массив #5
Ахх... Огромное вам спасибо). Я не правильно читал задание лабораторной и пытался сделать непонятно что.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
05.11.2010, 23:25     Создание массива по Указателю на массив #6
Не забудь добавить delete [] e; в конце программы. Освободите динамическую память. А char (*e)[3]; - если не ошибаюсь - объявление массива указателей.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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
то есть они совпадут, но первое яснее
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
06.11.2010, 05:16     Создание массива по Указателю на массив #8
Не проще ли объявить указатель типа char, присвоить ему адрес 0-го элемента массива, и в дальнейшем обращаться с ним как с обычным массивом.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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] */
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
06.11.2010, 09:30     Создание массива по Указателю на массив #10
Эт момент я как то упустил. Спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2010, 12:00     Создание массива по Указателю на массив
Еще ссылки по теме:

Указатели и массивы. Передача массива в функцию по указателю C++
Размер массива по указателю C++
C++ Массив по указателю void*

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

Или воспользуйтесь поиском по форуму:
Zeth
0 / 0 / 0
Регистрация: 05.11.2010
Сообщений: 12
06.11.2010, 12:00  [ТС]     Создание массива по Указателю на массив #11
Спасибо за разные варианты). Я упустил лекцию по этой теме и все это мне пригодится.
Yandex
Объявления
06.11.2010, 12:00     Создание массива по Указателю на массив
Ответ Создать тему
Опции темы

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