Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / инициализация указателя / 24 сообщений из 24, страница 1 из 1
29.09.2006, 10:22
    #34021095
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
Привет. Вопрос такой: надо объявить и инициализировать указатель на массивы int. Делаю:
Код: plaintext
1.
int *((*p)[ 5 ]);
*p=(int(*)[ 5 ])(new int[ 5 ]);
В чем я не прав?

PS: вариант int** не подходит. Нужно именно указатель на массивы int.
...
Рейтинг: 0 / 0
29.09.2006, 10:35
    #34021168
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
bemtaillПривет. Вопрос такой: надо объявить и инициализировать указатель на массивы int. Делаю:
Код: plaintext
1.
int *((*p)[ 5 ]);
*p=(int(*)[ 5 ])(new int[ 5 ]);
В чем я не прав?

PS: вариант int** не подходит. Нужно именно указатель на массивы int.

Почему не подходит?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
int ap[ 5 ];
int **p;
int i;
int n_massives= 10 ;

p=(int *)malloc(sizeof(int*)*n_massives);
p[ 0 ]=ap;
i=p[ 0 ][ 3 ];

...
Рейтинг: 0 / 0
29.09.2006, 10:36
    #34021173
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
Akh

блин, две звезды.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
int ap[ 5 ];
int **p;
int i;
int n_massives= 10 ;

p=(int **)malloc(sizeof(int*)*n_massives);
p[ 0 ]=ap;
i=p[ 0 ][ 3 ];

...
Рейтинг: 0 / 0
29.09.2006, 10:53
    #34021233
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
а так?
Код: plaintext
1.
int (*p)[ 5 ];
p=&(new int[ 5 ]);
...
Рейтинг: 0 / 0
29.09.2006, 10:58
    #34021252
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
вот ещё можешь почитать про типы :)
...
Рейтинг: 0 / 0
29.09.2006, 11:04
    #34021278
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
Че то я с утра еще не проснулся:) в общем не много не правильно вопрос поставил. Нужен указатель на указатель на массив инт! Во как.
Akh Akh

блин, две звезды.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
int ap[ 5 ];
int **p;
int i;
int n_massives= 10 ;

p=(int **)malloc(sizeof(int*)*n_massives);
p[ 0 ]=ap;
i=p[ 0 ][ 3 ];



я имею ввиду что так можно сделать, но мне надо имено как я хочу:) короче тренеруюсь...

автора так?
int (*p)[5];
p=&(new int[5]);

int (*p)[5]; - указатель на массив инт. А мне надо указатель на указатель на массив инт....
...
Рейтинг: 0 / 0
29.09.2006, 11:14
    #34021331
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
а ты хочешь р проинициализировать просто адресом указателя на массив или ещё хочешь заодно тот указываемый указатель проинициализировать адресом массива? Там ещё придётся выделять память под указываемый указатель.
...
Рейтинг: 0 / 0
29.09.2006, 11:15
    #34021336
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
или даже под массив указателей на массив.
...
Рейтинг: 0 / 0
29.09.2006, 11:16
    #34021337
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
нарисуй, что тебе надо.
...
Рейтинг: 0 / 0
29.09.2006, 11:20
    #34021359
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
bemtaill
автора так?
int (*p)[5];
p=&(new int[5]);

int (*p)[5]; - указатель на массив инт. А мне надо указатель на указатель на массив инт....

Я так понимаю, две звезды тогда надо поставить.
...
Рейтинг: 0 / 0
29.09.2006, 11:22
    #34021368
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
этого мало. Конструкция многоэтажная и нужно будет выделять память под указываемый указатель. Короче, фсем осваивать живопись.
...
Рейтинг: 0 / 0
29.09.2006, 11:28
    #34021395
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
это как если у тебя int ****p; то если ты хочешь, чтобы оно указывало в конечном итоге на инт, тебе придётся выделить память под три промежуточных указателя и сцепить их в паровоз.
...
Рейтинг: 0 / 0
29.09.2006, 11:36
    #34021436
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
вроде так получется...
...
Рейтинг: 0 / 0
29.09.2006, 11:38
    #34021439
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
maXmoэтого мало. Конструкция многоэтажная и нужно будет выделять память под указываемый указатель. Короче, фсем осваивать живопись.

Само собой. Я про синтаксис типа.
...
Рейтинг: 0 / 0
29.09.2006, 11:51
    #34021506
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
по идее же

если р объявляем как int *((*p)[5]);

то:

new int[5] - *int;

приводим:

(int(*)[5])(new int[5]) - int(*)[5]

тогда :

*p - как раз указывает на (int(*)[5])

и строчка:

*p=(int(*)[5])(new int[5]);

должна работать.
...
Рейтинг: 0 / 0
29.09.2006, 11:54
    #34021527
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
Код: plaintext
1.
2.
3.
int (*p[])[ 5 ]; //массив указателей
p=new (*[ 100 ])[ 5 ]; //сто указателей
p[ 8 ]=&(new int[ 5 ]); //в девятом указателе - адрес нового массива
(*p[ 8 ])[ 4 ]=- 1 ; //заносим инт
не проверял
...
Рейтинг: 0 / 0
29.09.2006, 11:58
    #34021551
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
Код: plaintext
1.
2.
3.
4.
int (*p[])[ 5 ]; //массив указателей
p=new int (*[ 100 ])[ 5 ]; //сто указателей
p[ 8 ]=&(new int[ 5 ]); //в девятом указателе - адрес нового массива
(*p[ 8 ])[ 4 ]=- 1 ; //заносим инт
забыл тип :)
...
Рейтинг: 0 / 0
29.09.2006, 13:07
    #34021916
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
maXmo
Код: plaintext
1.
2.
3.
4.
int (*p[])[ 5 ]; //массив указателей
p=new int (*[ 100 ])[ 5 ]; //сто указателей
p[ 8 ]=&(new int[ 5 ]); //в девятом указателе - адрес нового массива
(*p[ 8 ])[ 4 ]=- 1 ; //заносим инт
забыл тип :)

неа. в первой строчке :
Size of 'p' is unknown or zero
...
Рейтинг: 0 / 0
29.09.2006, 13:13
    #34021939
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
значит, не пашет, пиши **p
...
Рейтинг: 0 / 0
29.09.2006, 13:15
    #34021953
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
лана, задача учебная, просто на извращения потянуло... Пасибо всем.
...
Рейтинг: 0 / 0
29.09.2006, 14:32
    #34022325
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
int *p = ...;
...
Рейтинг: 0 / 0
29.09.2006, 16:23
    #34022886
bemtaill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
MasterZivint *p = ...;

гм... хорошо сказал.
...
Рейтинг: 0 / 0
10.10.2006, 12:21
    #34043911
pirovindos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
bemtaillПривет. Вопрос такой: надо объявить и инициализировать указатель на массивы int. Делаю:
Код: plaintext
1.
int *((*p)[ 5 ]);
*p=(int(*)[ 5 ])(new int[ 5 ]);
В чем я не прав?

PS: вариант int** не подходит. Нужно именно указатель на массивы int.

По опыту: для построения такий конструкциях можно использовать typedef сложного типа, а потом объявлять на него указатель.
...
Рейтинг: 0 / 0
10.10.2006, 17:43
    #34045186
Gryz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация указателя
ИМХО, автор объявил таким образом указатель на массив размерности 5, содержащий в себе int*, а не то, что он говорит.

int * ((*p)[5]);
int * (x)[5];
p = & x;
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / инициализация указателя / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]