Из данной статьи Вы узнаете о передаче параметров в функцию и о возврате результата с помощью оператора return. Рассмотрим теоретический материал.
Передача параметров в функцию
Обмен информацией между вызываемой и вызывающей функциями осуществляется с помощью механизма передачи параметров. Список_переменных, указанный в заголовке функции называется формальными параметрами или просто параметрами функции. Список_переменных в операторе вызова функции — это фактические параметры или аргументы.
Передача параметров выполняется следующим образом. Вычисляются выражения, стоящие на месте фактических параметров. Затем формальным параметрам присваиваются значения фактических. Выполняется проверка типов и при необходимости выполняется их преобразование.
Передача параметров в функцию может осуществляться по значению и по адресу.
При передачи данных по значению функция работает с копиями фактических параметров, и доступна к исходным значениям аргументов у нее нет. При передачи по адресу в функцию передается не переменная, а ее адрес, и, следовательно, функция имеет доступ к ячейкам памяти, в которых хранятся аргументов. Таким образом, данные, переданные по значению, функция изменить не может, в отличие от данных, переданных по адресу.
Если требуется запретить изменение параметра внутри функции, используют модификатор const. Заголовок функции в общем виде будет выглядеть так:
тип имя_функции (const тип_переменной* имя_переменной, …)
Пример
#include "stdafx.h" #include <iostream> using namespace std; int f1(int i) //данные передаются по значению { return (i++); } int f2 (int* j) //данные передаются по адресу { //при подстановке фактического параметра, //для получения его значения, применяется операция разадресации * return((*j)++); } int f3 (const int* k) //изменение параметра не предусмотрено { return (*k); } int main () { int a; cout<<"a="; cin>>a; f1(a); cout<<"a="<<a<<"\n"; f2(&a); //для передачи фактического параметра //используется операция взятия адреса & cout<<"a="<<a<<"\n"; f3(&a); cout<<"a="<<a<<"\n"; system ("pause"); return 0; }
Возврат результата с помощью оператора return
Возврат результата из функции в вызывающую ее функцию осуществляется оператором
return (значение);
Работает оператор так. Вычисляется значение выражения, указанного после return и преобразуется к типу возвращаемого функцией значения. Выполнение функции завершается, а вычисленное значение передается в вызывающую функцию. Любые операторы, следующие в функции за оператором return, игнорируются. Программа продолжает свою работу с оператора следующего за оператором вызова данной функции.
Оператор return может отсутствовать в функциях типа void, если возврат происходит перед закрывающейся фигурной скобкой, и в функции main.
Также функция может содержать несколько операторов return, если это определенно потребностями алгоритма. Например, в следующей программе функция f сравнивает значение переменной с нулем. Если число положительное, то в программу передается значение равное 1, если отрицательное, то -1, а если нулевое, то 0.
#include "stdafx.h" #include <iostream> using namespace std; int f(int a) { if (a>0) return 1; else if (a<0) return -1; else return 0; } //функцию можно переписать так //int f(int a) //{ int r; //if (a>0) r=1; //else if (a<0) r=-1; //else r=0; //return(r); //} int main () { int b; cout<<"b="; cin>>b; if (f(b)==1) cout<<"positive value \n"; else if (f(b)==-1) cout<<"negative value \n"; else cout<<"zero value \n"; system ("pause"); }//в функции main отсутствует оператор return
Этот урок не последний в теме «функции». Но, что касается передачи параметров и оператора return, то думаю этого вполне достаточно для дальнейшего изучения C++.