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

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

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

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

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

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

Интервал:

Закладка:

Сделать

• Подобно переменным, функции имеют типы. В любой программе, в которой используется функция, предварительно должен быть объявлен тип этой функции. Поэтому данный прототип ANSI С предшествует объявлению функции main(): void starbar(void);

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

void starbar();

Следует отметить, что некоторые очень старые компиляторы не распознают тип void. В этом случае для функций, которые не возвращают значения, используйте тип int. И постарайтесь подыскать более новый компилятор.

• В общем случае прототип указывает как тин возвращаемого функцией значения, так и типы ожидаемых ею аргументов. Обобщенно эту информацию называют сигнатурой функции. В данном конкретном случае сигнатура указывает, что функция не имеет ни возвращаемого значения, ни аргументов.

• Прототип функции starbar() размещен в программе перед функцией main(); вместо этого его можно было бы поместить внутрь функции main() там, где находятся объявления переменных. Допустим любой из этих способов.

• Программа вызывает функцию (обращается к функции) starbar() из функции main(), для чего указывается ее имя, круглые скобки и точка с запятой, таким образом создавая оператор:

starbar();

Это форма вызова функции типа void. Каждый раз, когда управление сталкивается с оператором starbar();, оно ищет функцию starbar() и выполняет содержащиеся в ней инструкции. По завершении выполнения кода starbar() управление возвращается на следующую строку в вызывающей функции — в данном случае main() (рис. 9.1). (Точнее говоря, компилятор преобразует программу на языке С в код на машинном языке, который ведет себя описанным образом.)

Функции 329

Рис 91 Поток управления в программе lethead1с листинг 91 При - фото 241

Рис. 9.1, Поток управления в программе lethead1.с (листинг 9.1)

. При определении функции starbar() в программе применяется та же форма, что и при определении main(). Определение начинается с типа, имени и круглых скобок. Далее следует открывающая фигурная скобка, объявление используемых переменных, операторы функции и закрывающая фигурная скобка (рис. 9.2). Обратите внимание, что после этого экземпляра функции starbar() точка с запятой не указана. Отсутствие точки с запятой говорит компилятору о том, что функция starbar() определяется, а не вызывается или прототипируется.

• Функции starbar() и main() в программе находятся в одном файле. Их можно также разнести по двум отдельным файлам. Форму с одним файлом легче компилировать. Два отдельных файла упрощают применение одной функции в разных программах. Если вы помещаете функцию в отдельный файл, то должны поместить в него также необходимые директивы #define и #include. Использование двух и более файлов обсуждается позже, а пока все функции мы будем хранить вместе в одном файле. Закрывающая фигурная скобка main() указывает компилятору, где эта функция заканчивается, а следующий за ней заголовок starbar() сообщает компилятору о том, что starbar() является функцией.

• Переменная count в функции starbar() является локальной. Это означает, что она известна только этой функции. Имя count можно применять в других функциях, включая main(), и это не приведет к конфликту. Просто в программе будут существовать отдельные независимые друг от друга переменные, имеющие одинаковые имена.

картинка 242 картинка 243

Глава 9

Если думать о функции starbar() как о черном ящике, то ее действие заключается в выводе строки звездочек. Она не принимает входные данные, т.к. ей не нужна какая-либо информация от вызывающей функции. Она не предоставляет (т.е. не возвращает) информацию функции main(), поэтому starbar() не имеет возвращаемого значения. Короче говоря, функция starbar() не нуждается в каком-либо обмене данными с вызывающей функцией.

Давайте создадим функцию, для которой такой обмен данным необходим.

Аргументы функции

Показанный ранее заголовок письма выглядел бы намного лучше, если бы текст располагался по центру. Текст можно центрировать, поместив подходящее количест во ведущих пробелов перед выводом собственно текста. Такое поведение аналогично функции starbar(), которая выводила заданное число звездочек, но теперь необходимо выводить определенное количество пробелов. Вместо написания отдельной функции для каждой задачи мы создадим одну, но более универсальную функцию, которая решает обе задачи. Назовем эту новую функцию show_n_char() (имя означает, что символ отображается n раз). Единственное изменение касается того, что вместо использования встроенных значений для отображаемого символа и количества повторений в функции show n char() для этого будут применяться аргументы.

Давайте перейдем к деталям. Предположим, что доступное пространство имеет ширину 40 символов. Строка из звездочек содержит 40 символов, в точности соответствуя по ширине, и вызов show_n_char (' * ', 40) должен выводить эту строку точно так же, как это ранее делала функция starbar(). Что можно сказать о пробелах, используемых для центрирования строки GIGATHINK, INC.? Строка GIGATHINK, INC. имеет ширину 15 символов, поэтому в первой версии программы за заголовком следовали 25 пробелов. Для центрирования строки необходимо начать строку с 12 пробелов, что даст в результате 12 пробелов с одной стороны и 13 пробелов с другой. Таким образом, можно применять вызов show n char (' ', 12).

Помимо аргументов функция show n char() будет довольно похожа на starbar(). Одно отличие заключается в том, что show n char() не добавляет символ новой строки, как это делает starbar(), поскольку в той же строке может понадобиться вы-

Функции 331

вести другой текст. Переделанная версия программы показана в листинге 9.2. Чтобы продемонстрировать работу аргументов, в программе используются различные их формы.

Листинг9.2. Программа lethead2.c

Вот результат выполнения программы кккккккккккккккккккккккккккккккккккккккк - фото 244

Вот результат выполнения программы:

кккккккккккккккккккккккккккккккккккккккк

GIGATHINK, INC.

101 Megabuck Plaza Megapolis, CA 94904

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

Теперь давайте посмотрим, как построить функцию, которая принимает аргументы. После этого мы взглянем, как ею пользоваться.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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