Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BOOK_С_INTUIT.doc
Скачиваний:
10
Добавлен:
19.09.2019
Размер:
8 Мб
Скачать
☆

Контрольные вопросы

  1. Что такое динамическая память?

  2. Какие средства языка С используются для хранения данных с динамическим выделением памяти компьютера?

  3. Какие основные библиотечные функции языка С используются для динамического распределения памяти?

  4. Каково различие в действии функций malloc() и calloc()?

  5. Как осуществляется перераспределение динамической памяти?

  6. Для каких типов данных возможно динамическое распределение памяти?

  7. В каком случае функции динамического распределения памяти возвращают нулевой указатель?

Библиографический список

  1. Шилдт Г. Полный справочник по С : пер. с англ./Г. Шилдт. – 4-е изд. – М.: Вильямс, 2007. – 704 с.

  2. Керниган Б. У. Язык программирования С : пер. с англ./Б. У.Керниган, Д. М.Ритчи. – 2-е изд. – М.: Вильямс, 2007. – 304 с.

  3. Шеннон Р. Имитационное моделирование систем – искусство и наука/Р.Шеннон. – М.: Мир, 1978. – 418 с.

Тема 10 Функции Общие сведения о функциях языка с

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

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

В основе всех программ на языке программирования С лежат одни и те же фундаментальные элементы – функции [2]. Например, к системным функциям относятся printf(), scanf_s(), gets_s(), putchar() и др. Функции – это строительные элементы языка С и то место, в котором выполняется вся работа программы [1]. Большие программы обычно состоят из нескольких пользовательских функций и ряда системных функций. Функция – самостоятельная единица программы. Функции повышают уровень модульности программы, облегчают ее чтение, внесение изменений и коррекцию ошибок.

В частности, функция main() является обязательной для любой программы. Во всех программах С определяется единая внешняя функция с именем main(), служащая точкой входа в программу, то есть первой функцией, выполняемой после запуска программы [3].

Ни одна программа в языке С не может обойтись без функций.

Функция в языке С играет ту же роль, что и подпрограммы или процедуры в других языках [4]. Каждая функция имеет имя и список аргументов. По соглашению, принятому в языке С, при записи имени функции после него ставятся круглые скобки [4]. Это соглашение позволяет легко отличить имена переменных от имен функций.

Рассмотрим модель программы, в которой, кроме функции main(), содержатся еще три функции [4]. Код примера будет следующим:

#include <stdio.h>

int main(void) /* главная функция */

{

/* Начало тела функции */

function1(); /* вызов первой функции */

function2(); /* вызов второй функции */

function3(); /* вызов третьей функции */

} /* конец тела функции main() */

/* Начало определения первой функции */

function1() { /* начало тела первой функции */

/* Операторы первой функции */

/* Конец тела первой функции */

}

/* Начало определения второй функции */

function2()

{ /* Начало тела второй функции*/

/* Операторы второй функции */

/* Конец тела второй функции*/

}

/* Начало определения третьей функции */

function3()

{ /* Начало тела третьей функции*/

/* Операторы третьей функции */

/* Конец тела третьей функции*/

}

В представленной программе имеются четыре функции: main(), function1(), function2(), function3(), не содержащие аргументов. Позднее рассмотрим функции, которые имеют аргументы. Аргументы функции – это величины, которые передаются функции во время ее вызова. Аргумент, стоящий в операторе вызова функции, называется фактическим параметром. Аргументы, стоящие в заголовке функции, называются формальными параметрами. В языке С функция может возвращать значение в вызывающую программу посредством оператора return. Оператор возврата из функции в точку вызова имеет две формы [5]:

return;

return выражение;

В общем виде функция выглядит следующим образом [1]:

возвр-тип имя-функции(список параметров)

{

Тело_функции

}

Тело_функции – это часть определения функции, ограниченная фигурными скобками и непосредственно размещенная вслед за заголовком функции. Оно может быть либо составным оператором, либо блоком [1]. В языке С определения функций не могут быть вложенными, т.е. внутри одной функции нельзя объявить и расписать тело другой функции.

Возвращаемый тип функции возвр-тип определяет тип данного, возвращаемого функцией. Это могут быть, например, int, float, double и т.д. В случае когда функция ничего не возвращает, ей присваивается тип void.

Функция может возвращать любой тип данных, за исключением массивов. Список параметров – это список, элементы которого отделяются друг от друга запятыми [1]. При вызове функции параметры принимают значения аргументов. Если функция без параметров, то такой пустой список можно указать в явном виде, поместив для этого в скобки ключевое слово void. Все параметры функции (входящие в список параметров) должны объявляться отдельно, причем для каждого из них надо указывать и тип, и имя. В общем виде список объявлений параметров должен выглядеть следующим образом [1]:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]