Re[7]: Запись указателя в переменную
От: MikelSV http://www.centerix.ru
Дата: 24.09.07 21:55
Оценка: 1 (1)
Здравствуйте, djs_, Вы писали:

_>Здравствуйте, MikelSV, Вы писали:


_>А вы жалуетесь, что на вас не обращают внимания. Да каждый ваш вопрос — это просто праздник!

_>Их можно сразу постить в "Этюды для программистов".

MSV>>Вопрос был в том (По ходу дела я как-то неправильно его задал).


MSV>>char *edata, *ndata;


MSV>>Как это:

MSV>>memcpy(edata, &ndata, 4);

MSV>>Заменить на это (Просто не понимал, как правильно это написать):

MSV>>*(unsigned int*)edata=*(unsigned int*)&ndata;

_>Супер.

_>Вы же понимаете, что приводя edata, который (char *) к (unsigned_int *) и обратившись по этому адресу, вы скорее всего попортите чужую память?
Хм, странно, но у меня все работает.
Не понимаю. Если вы про размеры типов данны, то об этом я знаю и учитываю в разработке.

Если предлагаете сделать так: *(char *)edata=*(char *)&ndata; То нужного эффекта не получается, так как копируется только один символ.

_>Кроме того, вы используете указатель для хранения адреса на нужный вам указатель (масло маслянное).

_>Может в этом и есть тайный смысл, но почему бы в edata не хранить именно &ndata? Тогда edata = (char *)&ndata;

Пардон, но нафига мне адрес на ndata? ndata — простой указатель на новый блок данных.

Структура матрицы: [unsigned int size][char *nextdata][ char[x] data ]
Здесь я решил сделать без использования структур. Да, код писать сложнее, но более интересно.

Фокус прост: char *data, *edata, *ndata; — указатели на начало, конец и для прочих нужд.
все данные пишутся в блок данных(3) матрицы. Когда место заканчивается выделяю еще буффер, а в предыдущий блок пишу указатель на созданный.

Для определенных задач это самая эффективная матрица. Думаю на этой матрице закончится мой многолетний труд над ними. Это самая мощная матрица из всех (ранее созданных).

MSV>>Вопрос решен

Но люди еще лезут
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.