Увод в програмирането  alpha
Предаване на резултати чрез формални параметри
Note
Параметър на функция може да бъде указател
        void f( int x, int *p )
        {
                ........
                *p = 10;
                x = x + 5;
                ........
        }
        
        void main()
        {
                int a=15, b=5;
                
                f( a, &b);
                .........
        }

p е фактически параметър. Той се взима в програмата от главната функция. Т.е. чрез този формален параметър се променя фактически параметър. Т.е. след извикването на f(); b вече има стойност 10, а не 5. Докато a остава не променена.

Note
При указатели напрактика заместването става по име.

В C винаги заместването е по стойност, а стойността на указателя е адрес. Следователно изпълнението на f се отразява по следния начин: а оства 15, а b се променя на 10.

Задача:

Да се състави програма, в която се чрез отделна функция се пресмята лицето на кръг и дължината на окръжност.

Решение:

        #include<iostream>
        #define PI 3.141592
        
        using namespace std;
        
        void fcircle( double r, double *s, double *p)
        {
                *s = PI * r * r;
                *p = 2 * PI * r;
        }
        
        int main()
        {
                double a,b,c;
                cout<<"Въведете радиуса: ";
                cin>>a;
                
                fcircle( a, &b, &c );
                
                cout<<"Лицето е " << b << "Дължината е " << c << endl;
                
                return 0;
        }

В C++ може да се използва и заместване по име.

За целта се използват псевдоними:

        int n;
        int &nn = n;
        // nn се нарича псевдоним на n;
        
        double a[10];
        double &last = a[9];
        // можем да използваме last вместо a[9];
        
        const char &newline = '\n';

Псевдонимите се използват при заместване на формални с фактически параметри.

Формалния параметър може да се опише като псевдоним на фактическия.

        void fcircle( double r, double &s, double &p )
        {
                s = PI * r * r;
                p = 2 * PI * r;
        }
        
        int main()
        {
                double a,b,c;
                cout<<"Въведете радиуса: ";
                cin>>a;
                
                fcircle( a, b, c);
                
                cout<<"Лицето е " << b << "Дължината е " << c << endl;
                
                return 0;
        }

Така написана програмата изглежда по-естествено.

Note
Ако използваме псевдоними, то се извършва заместване по име.

В по-горния пример формалния параметър s е псевдоним на фактическия b, а формалния параметър p е псевдоним на фактическия c.

Напрактика формалния параметър е заместен с името на фактическия.