Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Тут можно читать онлайн Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература, издательство Вильямс, год 0101. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - описание и краткое содержание, автор Стивен Прата, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать книгу онлайн бесплатно, автор Стивен Прата
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

глава 11

картинка 372Например, вызов string_in ("данные", "ан") возвратит адрес символа а в строке данные. В противном случае функция должна возвратить нулевой указатель. Протестируйте функцию в завершенной программе, которая использует цикл для передачи входных значений созданной функции.

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

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

11. Напишите программу, которая читает до 10 строк и или до появления EOF, в зависимости от того, что произойдет раньше. Функция должна предложить пользователю меню с пятью вариантами: вывод исходного списка строк, вывод строк согласно последовательности сопоставления ASCII, вывод строк в порядке возрастания длины, вывод строк в порядке возрастания длины первого слова в строке и выход из программы. Меню должно отображаться до тех пор, пока пользователь не выберет вариант выхода из программы. Программа должна действительно выполнять запрошенные действия.

12. Напишите программу, которая читает входные данные до тех пор, пока не встретится EOF, и выводит количество слов, количество прописных букв, количество строчных букв, количество знаков препинания и количество-цифр. Используйте семейство функций ctype.h.

13. Напишите программу, которая повторяет на экране аргументы командной строки в обратном порядке. Другими словами, если аргументами командной строки являются до скорого свидания, данная программа должна вывести на экран

свидания скорого до.

14. Напишите программу реализации степенной зависимости, которая работает на основе командной строки. Первым аргументом командной строки должно быть число типа double, возводимое в определенную степень, а вторым аргументом - целочисленный показатель степени.

15. Для подготовки реализации функции atoi() используйте функции классификации символов. Эта версия должна возвращать значение 0, если строка ввода не является полностью числовой.

16. Напишите программу, которая читает входные данные до тех пор, пока не встретится EOF, и выводит их на экран. Программа должна распознавать и реализовывать следующие аргументы командной строки:

-р Вывод входных данных в том виде, как есть.

-и Преобразование входных данных в верхний регистр.

-1 Преобразование входных данных в нижний регистр.

Кроме того, если аргумент входной строки нс указан, программа должна вести себя гак, как если бы был задан аргумент -р.

12

Классы хранения, связывание и управление памятью

В ЭТОЙ ГЛАВЕ...

• Ключевые слова: auto, extern, static, register, const,volatile, restricted, Thread local,

Atomic

• Функции:rand() , srand() , time() , malloc() , calloc(), free()

• Определение в языке С области видимости переменной (насколько широко она известна) и времени жизни переменной (насколько долго она существует)

• Проектирование более сложных программ

480 глава 12

О

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

Классы хранения

Для хранения данных в памяти язык С предлагает пять разных моделей, или классов хранения. Чтобы понять доступные варианты, полезно сначала изучить несколько концепций и терминов.

В каждом примере программы, приводимом в этой книге, данные хранятся в памяти. Для этого существует аппаратный аспект — любое сохраненное значение находится в физической памяти. В литературе по С для описания такого участка памяти применяется термин объект. Объект может хранить одно или большее количество значений. В определенный момент объект может пока не содержать сохраненного значения, но он будет иметь правильный размер для помещения подходящего значения. (В формулировке объектно-ориентированное программирование понятие объект используется в более широком смысле для указания объектов классов, определения которых охватывают данные и разрешенные операции на этих данных; С не является языком объектно-ориентированного программирования.)

Имеется также и программный аспект — программе нужен какой-нибудь способ доступа к объекту. Этого можно достичь, например, путем объявления переменной:

int entity = 3;

Показанное объявление приводит к созданию идентификатора по имени entity. Идентификатор представляет собой имя, в данном случае такое, которое может применяться для обозначения содержимого отдельного объекта. Идентификаторы следуют соглашениям об именовании переменных, рассмотренным в главе 2. В этом случае идентификатор entity отражает способ, которым программное обеспечение (программа на С) указывает объект, хранящийся в аппаратной памяти. Такое объявление также предоставляет значение для сохранения в объекте.

Имя переменной — не единственный метод обозначения объекта. Например, взгляните на следующие объявления:

int * pt = &entity; int ranks[10];

В первом случае pt представляет собой идентификатор. Он обозначает объект, который содержит адрес. Выражение *pt — не идентификатор, поскольку оно не является именем. Тем не менее, оно указывает на объект, в данной ситуации — на тот же самый объект, что и entity. В общем случае, как вы можете помнить из главы 3, выражение, которое обозначает объект, называется l-.значением. Таким образом, entity — это идентификатор, представляющий собой 1-значение, a *pt — выражение, являющееся 1-значением. При тех же объявлениях выражение ranks + 2 * entity- не идентификатор (не имя) и не 1-значение (не указывает на содержимое ячейки памяти). Но выражение * (ranks + 2 * entity) является 1-значением, потому что оно указывает на значение определенной ячейки памяти (седьмого элемента массива ranks). Кстати говоря, объявление ranks приводит к созданию объекта, способного хранить 10 значений int, и каждый элемент массива также представляет собой объект.

Классы хранения, связывание и управление памятью 481

Если, как и во всех этих примерах, 1-значение можно использовать для изменения значения внутри объекта, мы имеем дело с модифицируемым Iзначением.. Теперь рассмотрим следующее объявление:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Прата читать все книги автора по порядку

Стивен Прата - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C. Лекции и упражнения (6-е изд.) 2015 отзывы


Отзывы читателей о книге Язык программирования C. Лекции и упражнения (6-е изд.) 2015, автор: Стивен Прата. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x