Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП - ПОИТ (Бахтизин) часть 1 редакт.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.76 Mб
Скачать

5.6. Указатели на функции

Можно объявить переменную-указатель на функцию и в дальнейшем вызывать её с помощью этого указателя.

В объявлении

long (*p) (int);

создаётся указатель p на функцию, которая принимает целочисленный параметр и возвращает значение типа long. Круглые скобки вокруг (*p) обязательны. Если убрать эти скобки, то это выражение будет объявлять функцию p, принимающую целочисленный параметр и возвращающую указатель на значение типа long. Чтобы связать указатель на функцию с определённой функцией, нужно просто записать для него операцию присваивания, указав в правой части имя функции без каких-либо скобок. При вызове функции через указатель следует задать все параметры, установленные для данной функции.

Пример объявления и использования указателя на функцию:

#include <stdio.h>

void mult(int, int);

void main()

{

int x, y;

void (*p)(int, int); //Объявление указателя на функцию

p = mult; //Связь указателя с функцией

scanf(“%d %d”, &x, &y);

p(x,y);

}

void mult(int x, int y)

{

printf(“%d”, x * y);

}

5.7. Структура программы на Си

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

команды препроцессора

объявление глобальных типов

объявление глобальных переменных

прототипы функций

тип_возврата main(параметры)

{

операторы

}

тип_возврата func1(параметры)

{

операторы

}

...

тип_возврата funcN(параметры)

{

операторы

}

5.8. Передача параметров в функцию main()

Во многих операционных системах, в частности, в DOS и UNIX, предусмотрена возможность передачи аргументов в функцию main() из командной строки. Аргументы командной строки – это текст, записанный после имени запускаемого на исполнение файла. При использовании командной строки функция main() выглядит так:

int main(int argc, char *argv[])

{

...

}

либо так

int main(int argc, char **argv)

{

...

}

Параметр argc сообщает количество командных параметров при обращении к функции main(), учитывая в качестве нулевого параметра имя самой выполняемой программы. Другими словами параметр argc сообщает количество слов в командной строке, разделенных пробелами.

Параметр argv – массив символьных строк (слов), в который помещаются аргументы командной строки (аргумент – любой текст, не содержащий символов «пробел» или «табуляция». Если возникает необходимость передать в качестве аргумента строку, содержащую пробелы или символы табуляции, то такую строку необходимо заключить в кавычки: “Студент БГУИР”).

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

Пример программы, получающей в качестве параметров названия городов и выводящей их в обратном порядке:

#include <stdio.h>

#include <conio.h>

int main(int argc, char *argv[])

{

int i;

for (i = argc – 1; i >= 1; i--)

printf(“%s ”, argv[i]);

getch();

return 0;

}

Строка запуска программы содержит имя файла (primer.exe) и список передаваемых параметров, разделенных пробелами

c:\primer.exe Витебск Брест Минск

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

Минск Брест Витебск

В памяти будет содержаться следующие данные:

Элемент argv[0] может содержать не только имя вызываемого файла, но и полный путь к нему.