С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Elena_Tu
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
1

Реализовать аналог `void *memmove(void *to, void *from, size_t n)`

17.09.2012, 08:09. Просмотров 2915. Ответов 25
Метки нет (Все метки)

Добрый день, подскажите пожалуйста, как реализовать такой метод самостоятельно?
который копирует из одного массива в другой n элементов
Спсибо, буду рада любому совету!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2012, 08:09
Ответы с готовыми решениями:

Возможна ли инициализация связного списка в функции void (void)?
Всем привет. В связи с полученным в универе заданием возник вопрос, а возможна...

Ошибка: error C2143 функция void deleteEnd(void)
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h>...

Работа с void*
Понадобилось поработать с си да ещё и в придачу с void*, не пойму почему моя...

Void в скобочках
Столкнулся с таким кодом на си: static void cdcacm_data_rx_cb(u8 ep) {...

Функция void на си
Помогите задать функцию void в коде. #include <stdio.h> #include <conio.h>...

25
accept
4833 / 3255 / 461
Регистрация: 10.12.2008
Сообщений: 10,569
19.09.2012, 12:56 21
Цитата Сообщение от Evg Посмотреть сообщение
От компилятора зависит только то, какой объект по какому адресу расположен.
от компилятора зависят сами эти номера, для упрощения они во всех системах представляются одинаково
0
Evg
Эксперт CАвтор FAQ
19360 / 7209 / 538
Регистрация: 30.03.2009
Сообщений: 20,160
Записей в блоге: 30
19.09.2012, 12:59 22
Цитата Сообщение от accept Посмотреть сообщение
от компилятора зависят сами эти номера, для упрощения они во всех системах представляются одинаково
Только вот представленый алгоритм memmove никак не зависит от конкретных значений адресов (он будет работать с любыми значениями). Но алгоритм зависит от реализации памяти. Что память - это сплошное пространство, адресация в котором идёт от меньших адресов к большим и адресация исчисляется в терминах целочисленных величин. И такая реализация памяти на всех процессорах (независимо от компилятора)
0
accept
4833 / 3255 / 461
Регистрация: 10.12.2008
Сообщений: 10,569
19.09.2012, 13:22 23
Цитата Сообщение от Evg Посмотреть сообщение
Только вот представленый алгоритм memmove никак не зависит от конкретных значений адресов (он будет работать с любыми значениями).
Цитата Сообщение от Evg Посмотреть сообщение
C
1
len -= (-dstp) % OPSIZ;
каково будет значение -dstp при максимальном dstp ?
0
alkagolik
Заблокирован
19.09.2012, 13:23 24
Цитата Сообщение от accept Посмотреть сообщение
используется хак, переводящий указатели в числа, основыванный на данных о том, как компилятор создаёт множество адресов
а чем указатели не числа? те же целочисленные величины без знака. Только именуются виртуальными адресами.
Цитата Сообщение от accept Посмотреть сообщение
то, как организована адресация в программе, зависит от компилятора, а не от архитектуры
компилятор имеет право "перетасовать" гипотетически имеющиеся в его распоряжении адреса. Организация же адресации (ЧТ=ВА->ФА->данные, ЗП=данные->ВА->ФА) осуществляется "под" компилятором, т.е. ниже.
0
accept
4833 / 3255 / 461
Регистрация: 10.12.2008
Сообщений: 10,569
19.09.2012, 13:27 25
Цитата Сообщение от alkagolik Посмотреть сообщение
а чем указатели не числа?
они обрабатываются по правилам стандарта
0
Evg
Эксперт CАвтор FAQ
19360 / 7209 / 538
Регистрация: 30.03.2009
Сообщений: 20,160
Записей в блоге: 30
19.09.2012, 14:03 26
Цитата Сообщение от accept Посмотреть сообщение
каково будет значение -dstp при максимальном dstp ?
Если я правильно понимаю вопрос и dstp=0xff.....

C
len -= (-dstp) % OPSIZ;
len -= ((unsigned long)(0 - 0xffffffffUL)) % OPSIZ;
len -= (1) % OPSIZ;
len -= 1;
С учётом того, что при dstp=0xfff... значение len может быть либо 0, либо 1 (любые другие значения говорят о том, что пользователь подал некорректные данные), и приналичии условия if (len >= OP_T_THRES) в эту ветку мы вообще никогда не попадём
0
19.09.2012, 14:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2012, 14:03

Ошибка void value not ignored as it ought to be
Выдается следующая ошибка в функции zamena 56 строчка Помогите #include...

Присваивание void *
Написал программу, но ошибки в присваивании с раскрытием указателя на void....

Cannot convert 'void*' to 'int*'
Доброго времени суток. На этот код компилятор выдаёт ошибку "cannot convert...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru