Возвращение указателей функции в С++

Функция в качестве значения может возвращать указатель. Для этого нужно предусмотреть соответствующие инструкции в про­граммном коде функции. В прототипе функции, возвращающей в качестве значения указатель, перед именем функции указывают оператор *. Пример функции, возвращающей указатель, приведен в следующем листинге.
#include 
using namespace std;
int *mpoint(int &n,int &m){
if( n > m ) return &n;
else return &m;
}
int main(){
int n=3,m=5;
int *p;
p=mpoint(n,m);
(*p)++;
cout << "n =" << n << endl;
cout << "m =" << m << endl;
return 0;
}
В программе объявляется функция mpoint(), возвращающая в качестве результата указатель на максимальный из двух ее аргументов. Сразу отме­тим, что оба аргумента передаются по ссылке - если бы они передавались по значению, не было бы смысла возвращать указатель на один из аргументов, поскольку в этом случае указатель ссылался бы на временную переменную- копию аргумента. При возвращении в качестве значения указателя не следует забывать, что воз­ вращается адрес большего из аргументов, а не сам аргумент. Адрес переменной (аргумента) получаем, указав перед именем соответствующей переменной опе­ратор &, что и было сделано в командах return &n; и return &n;.

В главном методе программы объявляются две целочисленные переменные n и m со значениями 3 и 5 соответственно. Именно они передаются аргумен­тами функции mpoint(). Результат записывается в переменную-указатель р. В результате переменная р в качестве значения получает адрес перемен­ной m. Поэтому после выполнения команды (*р)++ значение переменной m увеличивается на единицу.
Онлайн всего: 2
Гостей: 2
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте