Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 5 подпрограммы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
433.15 Кб
Скачать

Параметр указатель

Формат определения параметра указателя.

Имя типа *имя параметра

Параметр указатель используется для передачи в подпрограмму переменной. При этом в стеке выделяется память только для адреса переданной переменной (всего 4 байта). Так как передается переменная, то ее значение может быть изменено подпрограммой.

Такой вид параметров используется:

  • для передачи переменных под результаты алгоритма, который реализует функция;

  • для передачи в функцию массива;

  • для передачи побочного результата функции (функция возвращает одно значение, а побочно может несколько).

Фактическим параметром, соответствующим параметру указателю может быть только адрес переменной.

Пример 2. Использование параметра указателя

Определить среднее арифметическое и среднее геометрическое трех целых чисел.

void crAvg_crGeom(int a, int b, int c, double *crA, double *crG)

{

*crA= (a+b+c)/3; // *crA имя ссылочной переменной

*crG=pow(a+b+c, 1/3.0);

}

int main()

{

double d,g;

crAvg_crGeom(3, 9, 8,&d, &g);// &d адрес переменной

printf(“ среднее арифметическое = %lf\n”, d);

printf(“ среднее геометрическое = %lf\n”, g);

}

Параметр ссылка

Формат определения параметра указателя.

Имя типа &имя параметра

Этот параметр используется в С++ для передачи в подпрограмму переменной. При этом в стеке выделяется память только для адреса переданной переменной (всего 4 байта). Так как передается переменная, то ее значение может быть изменено в функции.

Фактическим параметром, соответствующим ссылочному параметру может быть только переменная.

Пример 3. Использование параметра ссылки

Определить среднее арифметическое и среднее геометрическое трех целых чисел.

void crAvg_crGeom(int a, int b, int c, double &crA, double &crG)

{

crA= (a+b+c)/3; // *crA имя ссылочной переменной

crG=pow(a+b+c, 1/3.0);

}

int main()

{

double d,g;

crAvg_crGeom(3, 9, 8,d, g); // передается переменная

printf(“ среднее арифметическое = %lf\n”, d);

printf(“ среднее геометрическое = %lf\n”, g);

}

Замечание. Сравните код примера 2 и код примера 3. Реализация задачи в примере 3 по синтаксису проще.

Параметр – константа

Формат определения константного параметра

const Имя типа &имя параметра

Параметр - константа используется для передачи в функцию переменной (ссылки на нее), но значение переданного параметра изменить нельзя.

Фактическим параметром, соответствующим параметру переменной может быть только переменная.

Параметр - константа нельзя использовать в левой части оператора присваивания.

Пример 4. Использование константного параметра

void ex1(const int &a, int b, int &c)

{

c= c*a+b;

}

int _tmain(int argc, _TCHAR* argv[])

{

int b,a=20;

ex1(a,10,b);

}

Параметр по умолчанию

Формат определения константного параметра

Имя типа имя параметра = значение

Параметры по умолчанию должны находиться в конце списка формальных параметров. Если используется значение по умолчанию, то в вызове соответствующий фактический параметр не указывается.

Устанавливает значение параметра в значение указанное по умолчанию, или заменяет на значение соответствующего фактического параметра.

Пример 5. Параметр по умолчанию и вызовы функции, имеющей параметр по умолчанию

void ex2(int &a, int b=10, int c=2)

{

a= c+b;

}

int _tmain(int argc, _TCHAR* argv[])

{

int b,a;

//вызов без определения двух параметров

ex2(a);

printf("a=%d",a);

//вызов с определением значения одного параметра по умолчанию

ex2(a,100);

printf("a=%d",a);

//вызов с определением значений двух параметров по умолчанию

ex2(a,1,1);

printf("a=%d",a);

}