- •Содержание
- •Предисловие
- •1. Общие методические указания
- •2. Рабочая программа и методические указания к темам курса
- •2.1 Типы данных
- •2.2.1 Операторы управления
- •If (выражание) оператор_1;
- •2.2.2 Операторы ввода-вывода
- •Контрольные вопросы
- •2.3 Массивы и указатели
- •2.3.1 Указатели
- •2.3.2 Массивы
- •Контрольные вопросы
- •2.4 Типы данных, определяемые пользователем
- •2.4.1 Структуры
- •2.4.2 Перечисления
- •2.4.3 Структуры с битовыми полями
- •2.4.4 Объединение (смесь)
- •Контрольные вопросы
- •2.5 Функции
- •2.5.1 Общие сведения о функциях
- •Способы передачи параметров функции
- •2.5.2 Рекурсивные функции
- •2.5.3 Перегрузка функций
- •2.5.4 Шаблоны функций
- •Контрольные вопросы
- •3. Перечень лабораторных работ
- •Список литературы
- •Давыдов, в.Г. Программирование и основы алгоритмизации [Текст]: учеб. Пособие/ в.Г. Давыдов – м: Высшая школа, 2003. – 447с.: ил.: 22 см. – Библиогр.: с. 442. – 3000 экз. - isbn 5-060-04432-7.
Способы передачи параметров функции
В C++ определено несколько способов передачи параметров функции и получения результатов вычисления функции, вызывающей средой. Существует четыре специфики передачи параметров функции:
вызов функции с передачей значений;
вызов функции с передачей адресов переменных;
вызов функции с использованием механизма ссылок при передаче параметров;
посредством глобальных параметров.
Вызов функции с передачей значений. Этот способ передачи параметров обеспечивает передачу копий переменных в стек, организуемый при активизации функции. При этом обеспечивается защита самих переменных от их изменения в функции. Пример:
#include<iostream.h>
int sum(int,int); // объявление функции
void mane(void)
{int a,b,c;
cin >> a >> b;
c=sum(a,b); //передача параметров значений
cout << c << endl;
}
// определение функции
int sum(int d, int l) // заголовок
{ // тело функции
int f;
f=d+l;
return f; // результат передаётся в точку вызова
}
Вызов функции с передачей адресов. Этот способ передачи параметров обеспечивает передачу в стек адресов передаваемых данных, что позволяет функции работать непосредственно с данными.
#include<iostream.h>
sum(int,int,int*); // объявление функции
void main( )
{int a,b,c=0;
cin>>a>>b;
sum(a,b,&c); // вызов функции
cout<<c<<endl;
}
void sum(intd,intl,int*f) // определение функции
{
*f=d+l // f – указатель на c
}
Вызов функций с использованием механизма ссылок. Этот способ обеспечивает доступ к передаваемым параметрам посредством определения их альтернативного имени. Например:
#include<iostream.h>
sum(int,int,int&);
void main( )
{
int a,b,c=0;
cin >> a >> b;
sum(a,b,c);
cout << c << endl;
}
void sum(int d,int l,int &f)
{
f=d+l; // f- ссылка на c
}
Вызов функции с передачей данных посредством глобальных параметров. Этот способ передачи исходных данных в вызываемую функцию и возвращения результата вычислений путём использования глобальных параметров.
Например:
#include <iostream.h>
int a,b,c;
sum(); // объявление функции
main()
{
cin >> a >> b;
sum(); //вызов функции
cout<<c<<endl;
}
sum() // определение функции
{c=a+b; //a,b,c- глобальные переменные
}
Вызов функции с передачей аргументов по умолчанию. В языке С++, начиная с версии 3.11 и выше, определена возможность передачи значений аргументов функции по умолчанию. Этот способ передачи значений параметров используется в том случае, когда необходимо обеспечить передачу только части значений параметров, а не всех.
Объявление значений функции по умолчанию производится путём указания значений аргументов в прототипе функции посредством оператора присваивания.
#include<iostream.h>
float ur(float x,float a=0.,float b=0.,float c=0.);
int main()
{float a=1.,b=2.,c=3.,x=0.5,y;
y=ur(x,a,b,c);
cout<<"введены все аргументы"<<"\n";
cout<<y<<"\n";
y=ur(x,a,b);
cout<<"введены x,a и b"<<"\n";
cout<<y<<"\n";
y=ur(x);
cout<<"введен x"<<"\n";
cout<<y<<"\n";
cin>>a;
}
float ur(float x,float a,float b,float c)
{
return a*x*x+b*x+c;}
На экране дисплея мы получим следующие результаты работы вышеприведенной программы.
Введены все аргументы
4.25
введены x,a и b
1.25
введен x
0.