Передача параметров в функции по указателю (по ссылке)

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

#include <stdio.h>

void MyFun(int* pa)

{

*pa=100;

}

void main()

{

int a=10;

MyFun(&a);

printf("a=%d", a); // Будет напечатано a=100

}

В этом примере значение переменной a будет изменено, так как в этом случае в стек помещается не копия переменной a, а адрес переменной, при выполнении операции обращение по адресу внутри функции, новое значение будет записано по адресу исходной переменной а и переменная будет изменена. Данный процесс демонстрируется на рисунке.

  Оперативная память
….. ….. …..   Стек
Переменная a=10, 100
pa - адрес a
*pa=100

 

 


Такой механизм передача параметров называется передача параметров по указателю.

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

Примечание. Поэтому в стандартной функции ввода scanf и некоторых других функциях при вызове передается адрес переменной (используется операция &).

В языке Си++ появился новый тип – ссылки. В некоторых случаях их удобно использовать вместо указателей в качестве параметров функции, так как ссылка, по сути, является указателем, но к ней не надо применять операцию обращения по адресу («*»). В представленном ниже примере функция также меняет значение параметра.

#include <stdio.h>

void MyFun(int& la) // Параметр функции - ссылка

{

la=100; // Не нужно применять операцию – обращение по адресу

}

void main()

{

int a=10;

MyFun(a); // При вызове не нужно получать адрес

printf("a=%d", a); // Будет напечатано a=100

}

 








Дата добавления: 2015-08-14; просмотров: 809;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.