|
Увод в програмирането
alpha
|
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 остава не променена.
В 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;
}Така написана програмата изглежда по-естествено.
В по-горния пример формалния параметър s е псевдоним на фактическия b, а формалния параметър p е псевдоним на фактическия c.
Напрактика формалния параметър е заместен с името на фактическия.