б. Вызов функции должен выглядеть следующим образом:
memcpy(datal, data2 + 200 , 100 * sizeof(double));
826 Приложение А
Ответы на вопросы для самоконтроля из главы 17
1. Определение типа данных заключается в определении способа хранения данных и набора функций манипулирования данными.
2. Обход списка может выполняться только в одном направлении, поскольку каждая структура содержит адрес следующей, но не предыдущей структуры. Определение структуры можно было бы изменить, чтобы каждая структура содержала два указателя — один на предыдущую структуру и один на следующую. Разумеется, программа должна была бы присваивать соответствующие адреса этим указателям при каждом добавлении новой структуры.
3. ADT — аббревиатура от abstract data type (абстрактный тип данных). ADT представляет собой формальное определение свойств типа и операций, которые можно выполнять с этим типом. ADT должен быть выражен в обобщенных терминах, а не терминах какого-то конкретного языка программирования или деталей реализации.
4. Преимущества передачи переменной напрямую. Данная функция проверяет очередь, но не должна ее изменять. Передача переменной, представляющей очередь, напрямую означает, что функция работает с копией исходных данных, гарантируя невозможность их изменения функцией. При передаче переменной напрямую не нужно помнить о необходимости использования операции взятия адреса или указателя.
Недостатки передачи переменной напрямую. Программа должна зарезервировать достаточный объем памяти для хранения переменной, а затем скопировать информацию из оригинала в копию. Если переменная представляет собой крупную структуру, ее использование будет сопряжено с большими затратами времени и памяти.
Преимущества передачи адреса переменной. Если переменная является крупной структурой, то передача адреса и доступ к исходным данным выполняются быстрее и требуют меньшего объема памяти, чем при передаче переменной напрямую. Недостатки передачи адреса переменной. Необходимо помнить о применении операции взятия адреса или указателя. В K&R С функция могла бы неумышленно изменить исходные данные, но этой опасности можно избежать, используя спецификатор const стандарта ANSI С.
5. а.
Имя типа: Стек.
Свойства типа: Может содержать упорядоченную последовательностъ элементов. Операции типа: Инициализация стека пустым значением.
Определение, является ли стек пустым.
Определение, является ли стек полным.
Добавление элемента в верхушку стека (заталкивание элемента)
Удаление и восстановление элемента из верхушки стека (выталкивание элемента).


Б
Справочные
материалы
этой части книги предоставлен итоговый перечень базовых средств С наряду с более детализированным рассмотрением определенных тем. Ниже приведен список разделов данного приложения.
• Раздел I. Дополнительные ис точники информации
• Раздел II. Операции в языке C
• Раздел III. Базовые типы и классы хранения
• Раздел IV Выражения, операторы и поток управления программы
• Раздел V. Стандартная библиотека ANSI C с дополнениями С99 и Cl1
• Раздел VI. Расширенные целочисленные типы
• Раздел VII. Расширенная поддержка символов
• Раздел VIII. Расширенные вычислительные средства С99/С11
• Раздел IX. Отличия между С и C++
830 Приложение Б
Раздел I. Дополнительные источники информации
Если вы хотите узнать больше о языке С и программировании, вам будут полезны следующие ссылки.
Онлайновые ресурсы
Программисты на С помогали создавать Интернет, и теперь Интернет может помочь вам в изучении С. Интернет постоянно растет и изменяется; перечисленные ниже ресурсы — это пример того, что доступно на время написания книги. Разумеется, вы можете найти и другие онлайновые ресурсы.
В качестве возможного места старта, если у вас есть специфические вопросы о С, или же вы хотите расширить свои знания, обратитесь на сайт С FAQ (Frequently Asked Questions — часто задаваемые вопросы):
c-faq.com
Тем не менее, на указанном сайте раскрываются главным образом аспекты языка только до версии С89.
Читать дальше