Программирование >>  Структурное программирование 

1 ... 294 295 296 [ 297 ] 298 299 300 ... 342


Функция memcmp сравнивает указанное число символов своего первого параметра с соответствующими символами своего второго параметра.

Функция memchr определяет первое вхождение байта, представленного как unsigned char, в указанное число байтов объекта. Если указанный байт найден, возвращается указатель на этот байт объекта; в противном случае возвращается указатель NULL.

Функция memset копирует значение байта, являющегося ее вторым аргументом и трактуемого как unsigned char, в заданное число байтов объекта, на который указывает ее первый аргумент.

Функция strerror принимает номер ошибки и находит в системе строку сообщения об этой ошибке. Возвращается указатель на эту строку.

Терминология

& операция поразрядного И &= операция присваивания

поразрядного И операция сдвига влево = операция присваивания

сдвига влево

операция сдвига вправо = операция присваивания

сдвига вправо операция поразрядного

исключающего ИЛИ операция присваивания

поразрядного исключающего ИЛИ I операция поразрядного ИЛИ 1= операция присваивания

поразрядного ИЛИ - операция поразрядного НЕ

(дополнения, отрицания) ASCII atof atoi atol ctype.h isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit memchr memcmp memcpy memmove memset stdlib.h

strpbrk

strchr

strcspn

strerror

string.h

strrchr

strspn

strstr

strtod

strtol

strtoul

struct

tolower

toupper

typedef

библиотека утилит общего назначения битовое поле

битовое поле нулевой ширины буква

дополнение

дополнение до единицы

запись

заполнение

инициализация структур код символа

компромисс память - время маска

маскирование битов массив структур набор символов неименованное битовое поле обработка строк обработка текстов ограничитель печатный символ подстрока (цепочка поиска) присваивание структуры самоадресуемая структура сдвиг



сдвиг влево сдвиг вправо символ разделитель символьная константа строка

строковая константа

тип структуры указатель на структуру управляющий символ функции преобразования строк шестнадцатеричная цифра ширина битового поля

Типичные ошибки программирования

16.1. Забывают поставить точку с запятой после окончания объявления структуры.

16.2. Присваивание структуры одного типа структуре другого типа.

16.3. Сравнение структур является синтаксической ошибкой из-за разных требований по выравниванию в разных системах.

16.4. Ошибочно предполагается, что структуры подобно массивам автоматически передаются вызовом по ссылке и предпринимается попытка изменить в вызываемой программе значения структуры в вызывающей функции.

16.5. Забывают включить индекс массива при ссылке на отдельные структуры в массиве структур.

16.6. Использование операции логическое И (&&) вместо операции поразрядное И (&) и наоборот.

16.7. Использование операции логическое ИЛИ () вместо операции поразрядное ИЛИ (I) и наоборот.

16.8. Результат сдвига какого-либо значения не определен, если правый операнд является отрицательным или если правый операнд больше числа битов в левом операнде.

16.9. Попытка осуществить доступ к отдельным битам битового поля как если бы они были элементами массива. Битовые поля не являются массивами битов .

16.10. Попытка получить адрес битового поля (операция & не может применяться к битовым полям, поскольку они не имеют адресов).

16.11. Все функции копирующие строки, кроме memmove, дают неопределенный результат при копировании одной части строки в другую часть той же строки.

Хороший стиль программирования

16.1. При создании типа структуры следует предусмотреть и создание имени структуры. Имя структуры удобно использовать в дальнейшем для объявления новых переменных типа данной структуры.

16.2. Записывайте имена в предложении typedef заглавными буквами, чтобы подчеркнуть, что эти имена являются синонимами других имен типов.



Советы по повышению эффективности

16.1. Передача структур (особенно больших структур) вызовом по ссылке является более эффективной, чем передача структур вызовом по значению, при которой необходимо копировать всю структуру.

16.2. Битовые поля способствуют рациональному использованию памяти.

16.3. Хотя битовые поля сокращают требования к памяти, их использование может привести к тому, что компилятор будет генерировать машинный код, который выполняется с низкой скоростью. Это происходит вследствие того, что приходится использовать дополнительные операции машинного языка для получения доступа к отдельным частям адресуемых элементов памяти. Это является одним из множества примеров необходимости компромисса между требованиями эффективности по памяти и по времени выполнения программы.

Замечания по мобильности

16.1. Поскольку размер данных-элементов определенного типа является машинно-зависимым и выравнивание памяти тоже является машинно-зависимым, то и представление структуры также машинно-зависимо.

16.2. Использование typedef позволяет создавать более мобильные программы.

16.3. Поразрядные манипуляции с данными являются машинно-зависимыми.

16.4. Результат сдвига вправо целого значения со знаком (типа signed) является машинно-зависимым. Некоторые компьютеры заполняют освобожденные биты нулями, а другие компьютеры используют бит знака.

16.5. Манипуляции с битовыми полями являются машинно-зависимыми. Например, в некоторых компьютерах битовые поля могут пересекать границы машинного слова, тогда как в других компьютерах это недопустимо.

16.6. Тип size t является системно-зависимым синонимом или типа unsigned long, или типа unsigned int.

16.7. Сообщения, генерируемые strerror, являются системно-зависимыми. Упражнения для самопроверки

16.1. Заполнить пробелы в следующих утверждениях:

a) является набором связанных переменных, объединенных одним именем.

b) Биты в результате вычисления выражения, использующего операцию , устанавливаются в 1, если соответствующие

биты в обоих операндах установлены в 1. Б противном случае биты устанавливаются в 0.



1 ... 294 295 296 [ 297 ] 298 299 300 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.007
При копировании материалов приветствуются ссылки.
Яндекс.Метрика