Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Работа с указателями, нужен совет.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Работа с указателями, нужен совет.
Имя
Сообщение << Старые топики   Новые топики >>
Работа с указателями, нужен совет. - 2010-09-04 22:53:14.590000   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
Есть код, он выделет память под N структур. Мне нужно перемешать указатели на структуры, потому что менять местами блоки памяти не рационально. Так как поинтеры на структуры в принципе не где не хранятся, то я подумал выделить память под указатели и под содержимое массивов. Заполнить массив указателей, на структуры. И потом перемешать массив указателей, и юзать все по прежнему.

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef unsigned int *PDWORD; struct struct_A { char Name[255]; int ABC1; int ABC2; }; int main() { struct struct_A *ARRAY; struct struct_A **ARRAY_POINTER; int i, PN = 4; ARRAY = (struct struct_A*) calloc(PN, sizeof(struct struct_A)); ARRAY_POINTER = (struct struct_A**) calloc(PN, sizeof(unsigned int)); for(i=0;i&lt;PN;i++) ARRAY_POINTER[i] = &ARRAY[i]; for(i=0;i&lt;PN;i++) { ARRAY[i].ABC1 = i; ARRAY[i].ABC2 = i; } for(i=0;i&lt;PN;i++) { printf("ARRAY[%X].ABC1 == %X\n", i, (struct struct_A) *ARRAY_POINTER[i].ABC1); //printf("ARRAY[%d].ABC2 == %X\n\n", i, ARRAY_POINTER[i]); } getchar(); return 0; }
Во первых не соображу как получить доступ к члену структуры

quote:


printf("ARRAY[%X].A0 == %X\n", i, (struct struct_A) *ARRAY_POINTER.A0);


Во вторых придется заменять много кода на другой вид, что приведет к плохой читабельности кода. Как лучше сделать?
Post #: 1
RE: Работа с указателями, нужен совет. - 2010-09-04 23:37:45.600000   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
quote:

Могу предложить такой вариант.


Ну я так и сделал. Думал можно как-то рациональнее поправить код.
Post #: 2
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Работа с указателями, нужен совет.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.