Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
функции_new.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
101.67 Кб
Скачать

Void rrr ( int & a , int &b , int & c )

{ a += 100; b+= 100; c+= 100;

cout << a <<b <<c ;

}

Void main ( )

{ int a1=1 , b1 =2 , c1=3;

cout << a1 << b1 <<c1 ;

RRR( a1, b1 , c1 );

cout << a1 <<b1 << c1 ;

}

Результат:

1 2 3 // переменные до вызова функции

101 102 103 // изменения параметров в функции

101 102 103 // функция изменила фактические параметры

На рисунке 3 показано, как функция непосредственно обрабатывает внешние по отношению к ней переменные. При этом в функции не выделяется память под формальные параметры, формальный параметр – это абстракция, просто имя, которое при передаче фактического параметра связывается с внешним по отношению к функции участком памяти.

стек

101 102 103 - знач. переменных после вызова функции

1 2 3 - знач. переменных до вызова функции

a1 b1 c1 - переменные адреса

a b c - ссылки

Рисунок 3 – Схема обработки данных функцией при передаче параметров по ссылке

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

2. Классификация формальных параметров

Формальный параметр скаляр, указатель на скаляр, ссылка на скаляр.

В качестве скаляра будут рассматриваться переменные основных типов, элементы массивов или структур.

Если

1) Формальные параметры функции являются:

а) скаляры,

б) указатели на скаляры,

в) ссылки на скаляры,

то

фактическими параметрами должны быть:

а) значения скаляров,

б) адреса скаляров,

в) имена скаляров (имена участков памяти);

2) формальные параметры: массивы или указатели на массивы,

фактические параметры: имена массивов или имена указателей на массивы;

3) формальный параметр:

а) определение структуры,

б) указатель на структуру или массив структур

в) ссылка на структуру;

фактический параметр:

а) имя структуры (копирование структуры,

б) адрес (указатель) структуры или указатель на массив структур,

в) имя структуры (работа со структурой без копирования, т.е имя участка памяти, выделенного под структуру);

  1. формальный параметр – указатель на функцию

фактический параметр – адрес(имя) функции.

  1. Формальный параметр – скаляр, указатель на скаляр, ссылка на скаляр

Примеры были рассмотрены выше при рассмотрении передачи параметров по значению, по адресу и по ссылке.

Еще примеры:

1.

#include<iostream>

Void mult ( int a , int b , int *s )

{* s = a * b; }

int main ()

{ int c=3, d=7, s;

mult (c, d, & s); // mult ( 3, 7 , & s)

cout<< s ;

system("pause");

return 0;

}

2.

#include <iostream>

#include <iomanip>

#include <ctime>

#define n 10

using namespace std;