Четверг, 09.01.2025, 10:57
Главная Регистрация RSS поиск
Приветствую Вас, Гость
Меню сайта
Категории раздела
HTML [44]
Visual C++ и MFC [21]
c++ [78]
php [19]
Javascript [15]
C# [51]
загрузки [0]
XNA [10]
создание игр с помощью xna
Наш опрос
Каким языком программирования вы увлекаетесь
Всего ответов: 2420
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » c++

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

Язык C++ позволяет использовать прототипы функций. По сути, возвращаемый тип, идентификатор функции и типы параметров с обязательной точкой с запятой в конце составляют прототип функции. Прототип функции (function prototype) — это объявление функции, но не ее определение. Благодаря явному объявлению возвращаемого типа и списка типов аргументов, в C++ при обращении к функции возможны строгая проверка типов и неявные преобразования типов.

Итак, функция может быть объявлена до того, как она определена. Определение функции может идти позже в этом же файле, браться из библиотеки или из указанного пользователем файла. Прототип функции имеет следующую форму:

 тип имя(список_объявлений_аргументов);

список_объявлений_ аргументов может быть пустым, содержать единственное объявление или несколько объявлений, разделенных запятыми. Если функция не имеет параметров, допускается использование ключевого слова void. В C++ функ­ция с пустым списком параметров выглядит как имя_функции(). Такая информация позволяет компилятору отслеживать совместимость типов. Аргументы преобразуются к указанным в объявлении типам так же, как в случае присваивания.

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

 int min(int, int) ;

И возвращаемый тип функции, и типы аргументов в списке указываются явно. Определение функции min () должно соответствовать этому объявлению. Прототип функции может также содержать имена аргументов. В случае min () это могло бы выгля­деть так:

 int min(int x, int у);

В C++ используется эллипсический символ (ellipsis) (...) для обозначения списка аргументов, который не указан, но подразумевается. Функция printf () из стандартной библиотеки stdio.h имеет следующий прототип:

 int printf(const char* cntrl_str, ...);

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

//Сложение трех целых — иллюстрация прототипов функций
 #include <iostream.h>

int add3(int, int, int);

double average(int);

void main() 
{
int score_l, score_2, score_3, sum;

cout << "\nEnter three marks: ";

cin >> score_l >> score_2 >> score_3;

sum = add3(score_l, score_2, score_3);

cout << "\nSum= " << sum;

cout << "\n Average= " << average(sum);

sum = add3(1.5 * score_l, score_2, 0.5 * score_3);

cout << "\nWeight sum= " << sum << ".";

cout << "\nWeight average= " << average(sum) << "." << "\n";
}

int add3(int a, int b, int с)
{ return (a + b + с); } 

double average(int s) 
{ return (s / 3.0); }

Разбор программы

 int add3(int, int, int) ;
 double average(int);

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

 sum = add3(1.5 * score_l, score_2, 0.5 * score_3);

Вызов функции суммирования трех целочисленных параметров add3, параметры в скобках будут неявно преобразованы к целому типу.

 int add3(int a, int b, int с)
 {
 return (а + b + с) ;
 }

Это собственно определение функции. Оно соответствует объявлению прототипа функции перед main ().

Так как список аргументов в прототипе функции может включать имена переменных,

 int add3(int а, int b, int с) ;
тоже допустимо.
Категория: c++ | Добавил: slava (30.05.2011)
Просмотров: 3401 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]