Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по Программированию на С++.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
795.65 Кб
Скачать

Передача аргументов в функцию по значению

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

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

#include <iostream>

#include <conio>

using namespace std;

Void charline(char sim, int n); // объявление функции (прототип)

int main() {

charline('-', 43); // вызов функции (не указывается тип возвращаемого значения)

cout << "Tip dannyh Diapazon" << endl;

charline('=', 33); // вызов функции

cout << "char -128...127" << endl

<< "short -32,768...32,767" << endl

<< "int Systemno-zavisim." << endl

<< "long -2,147,483,648...2,147,483,647" << endl;

charline('-', 43); // вызов функции

getch(); return 0;

}

//------------------определение функции starline()

void charline(char sim, int n) { // заголовок функции

for(int j=0; j<n; j++ ) cout << sim; // тело функции

cout << endl; // тело функции

}

Данный пример демонстрирует механизм передачи аргументов в функцию (например, '-' и 43). Переменные, используемые внутри функции для хранения значений аргументов, называются параметрами. В функции charline() в качестве параметров выступают переменные sim и n. Из примера видно, что параметры используются внутри функции так же, как обычные переменные.

В приведённом примере роль аргументов выполняли константы: '-', 43 и т.д. Теперь давайте рассмотрим пример, в котором вместо констант в функцию будут передаваться значения переменных.

void charline(char sim, int n); // объявление функции (прототип)

int main() {

char Simv;

int N;

cout << "Vvedite simvol: "; cin >> Simv;

cout << "Vvedite chislo povtoreniy simvola: "; cin >> N;

charline(Simv, N); // вызов функции

getch(); return 0;

}

//------------------определение функции charline()

void charline(char sim, int n) { // заголовок функции

for(int j=0; j<n; j++ ) cout << sim; // тело функции

cout << endl; // тело функции

}

В этой программе переменные Simv и N передаются в качестве аргументов в функцию charline(). Переменные sim и n инициализируются переданными в функцию значениями. Обратите внимание на то, что имена, указываемые в прототипе функции, никак не связаны с именами переменных, передаваемых в качестве аргументов при вызове функции. Напомню ещё раз, что типы переменных, используемых в качестве аргументов функции, должны совпадать с типами, указанными в объявлении и определении функции.

Способ передачи аргументов, при котором функция создаёт копии передаваемых значений, называется передачей аргументов по значению. При передаче по значению в стек заносятся копии значений аргументов, и операторы функции работают с этими копиями. Доступа к исходным значениям параметров у функции нет, а, следовательно, нет и возможности их изменить.