Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BOOK_С_INTUIT.docx
Скачиваний:
33
Добавлен:
11.02.2015
Размер:
6.34 Mб
Скачать

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

  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]:

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