Передача параметров по адресу

Чтобы заставить функцию работать так, как нужно, следует передавать в нее не значения переменных x и y, а их адреса. Для этого необходимо выполнить следующее:

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

void swap(int* a, int* b)

{

int temp = *a;

*a = *b;

*b = temp;

}

2. Изменить вызов функции. Т.к. теперь она ожидает получить указатели, то необходимо передавать адреса фактических параметров x и у:

swap(&x, &y);

Теперь в функцию передаются адреса. И работа ведется относительно переданных адресов:

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


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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: