Что означает & в С++, на что он указывает
Унарный оператор & перед переменной указывает не на значение этой переменной, а НА АДРЕС, где эта переменная расположена, точнее на начало адреса. Количество байт которое занимает эта переменная программа узнает из типа переменной, который вы указали.
Расмотрим пример программы, мы хотим в функции поменять местами значения двух переменных, которые находятся ВНЕ функции. Для этого используем унарный оператор & и передадим функции адреса этих двух переменных. Это называется передача указателей функции.
using namespace std;
void revers (int *x, int *y);
int main ( )
{
int x,y;
x = 10;
y = 20;
revers (&x, &y); // вызываем функцию и передаем ей адреса переменных х и у
cout << "x=" << x << " y=" <<y;
return 0;
}
void revers (int *x, int *y)
{
int temp = *y; // временно сохраняем значение, расположенное по адресу *y
*y = *x; // помещаем значение хранимое по адресу *х, по адресу *у
*x = temp; // помещаем число сохраненное в temp, по адресу *х
}
Также оператор & может использован для ссылочных параметров (тут подробнее), он ставится перед именем аргумента функции, например:
#include <iostream>
using namespace std;
void f (int &i);
int main ()
{
int k = 10;
f(k);
return 0;
}
void f (int &i){
cout << &i << '\n'; // show in memory address 0x28ff0c
cout << i; // покажет значение переменной
}
Если в функции записать вывод переменной через звездочку cout << *i;
то это вызовет ошибку компилятора:
In function 'void f(int&)':
error: invalid type argument of unary '*' (have 'int'
Оставить свой ответ: