Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 Функции и структуры программ.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
33.07 Кб
Скачать

21. Основы и создание функций.

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

Функция – это именованная часть программы, которая может быть многократно вызвана из другого участка программы (в котором эта функция видна). Функция может принимать фиксированное либо переменное число аргументов, а может не иметь аргументов. Функция может как возвращать значение, так и быть пустой (void) и ничего не возвращать.

Мы уже знакомы с многими функциями и знаем, как их вызывать – это функции библиотек stdio, stdlib, string, conio и пр. Более того, main – это тоже функция. Она отличается от остальных только тем, что является точкой входа при запуске приложения. Функция в си определяется в глобальном контексте. Синтаксис функции:

<возвращаемый тип> <имя функции>(<тип1> <арг1>, <тип1> <арг2>, ...) {

    <тело функции>

}

Самый простой пример – функция, которая принимает число типа float и возвращает квадрат этого числа.

#include <conio.h>

#include <stdio.h>

 

float sqr(float x) {

    float tmp = x*x;

    return tmp;

}

 

void main() {

    printf("%.3f", sqr(9.3f));

    getch();

}

Внутри функции sqr мы создали локальную переменную, которой присвоили значение аргумента. В качестве аргумента функции передали число 9.3. Служебное слово return возвращает значение переменной tmp. Можно переписать функцию следующим образом:

float sqr(float x) {

    return x*x;

}

В данном случае сначала будет выполнено умножение, а после этого возврат значения. В том случае, если функция ничего не возвращает, типом возвращаемого значения будет void. Например, функция, которая печатает квадрат числа:

void printSqr(float x) {

    printf("%d", x*x);

    return;

}

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

void printSqr(float x) {

    printf("%d", x*x);

}

Если функция не принимает аргументов, то скобки оставляют пустыми. Можно также написать слово void:

22. Функции, возвращающие нецелые значения.

Говорится что возвращает число с плавающей точкой float sqr(float x) {

    float tmp = x*x;

    return tmp;

}

 

23.Внешние переменные.

Группу extern – описаний можно совсем опустить, если исходные определения переменных появляются в том же файле и перед функцией, которая их использует. Включение ключевого слова extern позволяет функции использовать внешнюю переменную, даже если она определяется позже в этом или другом файле. (Оба файла, конечно, должны быть скомпилированы, связаны или собраны в одно и то же время.)

     Если слово extern не включено в описание внутри функции, то под этим именем создается новая автоматическая переменная. Вы можете пометить вторую переменную как "автоматическую" с помощью слова auto и тем самым показать, что это ваше намерение, а не оплошность. Две примера демонстрируют четыре возможных комбинация описаний:

/* Пример1 */

int hocus;

main( ) {

extern int hocus; /* hocus описана внешней */

...

}

magic( ) {

extern int hocus;

...

}

Здесь есть одна внешняя переменная hocus, и она известна обеим функциям main( ) и magic( ).

/* Пример2 */

int hocus ;

main( )

{