- •Лабораторная работа №5
- •Оглавление
- •Функция типа void
- •Обмен данными между программой и функцией, между функциями
- •Обмен данными через глобальные переменные
- •Механизм параметров
- •Виды формальных параметров
- •Параметр значение
- •Параметр указатель
- •Параметр ссылка
- •Параметр – константа
- •Параметр по умолчанию
- •Параметр функция
- •Требования к выполнению лабораторной работы
- •Требования к выполнению первой задачи варианта
- •Требования к выполнению второй задачи варианта
- •Требования к выполнению третьей задачи варианта
- •Варианты
- •Пример оформления отчета задания 1
- •Контрольные вопросы.
Параметр указатель
Формат определения параметра указателя.
Имя типа *имя параметра
Параметр указатель используется для передачи в подпрограмму переменной. При этом в стеке выделяется память только для адреса переданной переменной (всего 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);
}
