Увод в програмирането
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.
Напрактика формалния параметър е заместен с името на фактическия.