
- •Обязательные свойства алгоритмов
- •3. Логический тип данных. Логические операторы. Операторы сравнения. Логические выражения.
- •6. Оператор цикла с предусловием (…). 1
- •7. Оператор цикла с постусловием. (…) 1
- •8. Оператор условного перехода.
- •9. Операторы переходов (goto, break, сontinue, return).
- •10. Статические массивы (одномерные и многомерные).
- •11. Указатели. Арифметика указателей.
- •12. Динамические переменные.
- •13. Одномерные динамические массивы.
- •Структура файла проекта
- •Структура модуля
- •Структура h-файла
- •16. Функции. Прототипы функций.
- •17. Функции, возвращающие результат. Понятие функции
- •18. Функции типа void.
- •19. Передача параметров функции по значению, по ссылке, с использованием указателей. Передача параметров функции по ссылке и по значению
- •20. Параметры функции – простые переменные, массивы, строки, функции.
- •21. Глобальные и локальные переменные.
18. Функции типа void.
функция для обозначения которой использовано служебное слово void это функция от которой не требуется возвращать какое то значени
19. Передача параметров функции по значению, по ссылке, с использованием указателей. Передача параметров функции по ссылке и по значению
В функцию параметры могут передаваться как по значению, так и по ссылке.
При передаче параметров по значению они при выходе из функции не изменятся. Например, следующий фрагмент напечатет на экране 1 и 3:
...
int func(int k){
k*=2;
return k;
}
void main(){
int z=1, y=3, k;
k=func(z)+func(y);
cout<<z<<" "<<y;
...
При передаче же параметров по ссылке прив выходе из функции из значения могут измениться. Как, например, в следующем фрагменте:
...
int func(int &k){
k*=2;
return k;
}
void main(){
int z=1, y=3, k;
k=func(z)+func(y);
cout<<z<<" "<<y;
...
После его выполнения на экране напечатается 2 и 6.
Разница между двумя этими фрагментами весьма невелика - всего 1 символ амперсанда (&) в строке
...
int func(int &k){
...
Еще один классический пример на эту тему - это функция, которая меняет значения своих параметров:
void func(int &n, int &m){
int tmp=n;
n=m;
m=tmp;
}
После выполнения такой функции значения её параметров поменяются местами.
В языках программирования существуют два способа передачи аргументов в подпрограмму. Первый из них известен как перелача параметров по значению (call by value). В этом случае формальному параметру подпрограммы присваевается копия значения аргумента, и все изменения параметра никак не отражаются на аргументе.
Второй способ называется передачей по ссылке (call by reference). При использовании этого метода параметру присваивается адрес аргумента. Внутри подпрогаммы этот адрес открывает доступ к фактическому аргументу. Это значит, что все изменения, которым подвергается параметр, отражаются на аргументе.
По умолчанию в языке C/C++ применяется передача по значению. Как правило, это означает, что код, образующий тело функции, не может изменять аргументы, указанные при ее вызове.
Хотя в языке C/C++ по умолчанию прменяется передача параметров по значению, их можно передавать и по ссылке. Для этого в функцию вместо аргумента нужно передать указатель на него. Поскольку функция получает адрес аргумента, ее код может изменять значение фактического аргумента вне функции.Указатели передаются функции как обычные переменные. Естественно, они должны быть объявлены как указатели.
20. Параметры функции – простые переменные, массивы, строки, функции.
Функции, параметры функции в C++
В C++, как и во всех других процедурных языках, функции нужны, чтобы разделить программу на относительно независимые части и кодировать каждую часть отдельно от других. Параметры функции В C++ параметры передаются функции по значению. Это значит, что если аргумент — переменная, то функция получает копию этой переменной, которая существует лишь пока выполняется тело функции. Пример. Определить функцию, которая складывает 2 числа и возвращает сумму в вызывающую программу. float sum ( float a, float b) { return a + b; } void main( ) { cout « sum(3, 5); } Возврат из функции выполняется инструкцией return. Ее необязательным элементом является выражение для возвращаемого значения. Инструкция return без выражения просто передает управление вызывающей функции. Объявление функции можно отделить от ее определения. В этом случае объявление может не содержать имен параметров. float sum (float, float); Определения функций не могут быть вложенными. Функция может не иметь параметров, может не возвращать значения. void Empty() {return;} Вызов функции возможен только в составе выражения, но выражение может состоять из единственного вызова функции. s = sum(x, у); Если в программе нам необходимо действие, выполняемое функцией, но не требуется возвращаемое значение, мы должны превратить выражение в инструкцию, поставив после него точку с запятой. sum(x, у) ;