В далеком средневековье (в начале 1980-х годов), еще до изобретения указателя void*, программисты, работавшие на языках C (и C++), для манипуляции байтами использовали строки.
Также вам может показаться, что такая тема как
http://les-vins.org/catalog/wine/?manufacturer=Tenuta_San_Guido
никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт les-vins.org
Тема Вино Sassicaia там представлена весьма широко.
В настоящее время основные стандартные библиотечные функции для работы с памятью имеют параметры типа void* и возвращают указатели типа void*, чтобы предупредить пользователей о непосредственной работе с памятью без контроля типов.
/* копирует n байтов из строки s2 в строку si (как функция strcpy): */ void* memcpy(void* si, const void* s2, size_t n);
/* копирует n байтов из строки s2 в строку si
(диапазон [si:si+n) может перекрываться с диапазоном [s2:s2+n) ): */ void* memmove(void* si, const void* s2, size_t n);
/* сравнивает n байтов из строки s2 в строку si (как функция strcmp): */ int memcmp(const void* si, const void* s2, size_t n);
/* находит символ c (преобразованный в тип unsigned char) среди первых n байтов строки s: */
void* memchr(const void* s, int c, size_t n);
/* копирует символ c (преобразованный в тип unsigned char)
в каждый из n байтов строки, на который ссылается указатель s: */ void* memset(void* s, int c, size_t n);
Не используйте эти функции в программах на языке C++. В частности, функция memset() обычно влияет на гарантии, выданные конструкторами.
27.5.3. Пример: функция strcpy()
Определение функции strcpy() представляет собой печально известный пример лаконичного стиля, который допускает язык C (и C++) .
char* strcpy(char* p, const char* q)
{
while (*p++ = *q++); return p;
}
Объяснение, почему этот код на самом деле копирует С-строку q в С-строку p, мы оставляем читателям в качестве упражнения.
Является ли корректной реализация функции strcpy() ? Объясните почему.
i| Если вы не можете аргументировать свой ответ, то не вправе считать себя программистом, работающим на языке C (однако вы можете быть компетентным в других языках программирования). Каждый язык имеет свои собственные идиомы, это относится и к языку C.
Опубликовал katy
May 01 2015 11:06:51 ·
0 Комментариев ·
3014 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.