Что означает & в С++, на что он указывает

Унарный оператор & перед переменной указывает не на значение этой переменной, а НА АДРЕС, где эта переменная расположена, точнее на начало адреса. Количество байт которое занимает эта переменная программа узнает из типа переменной, который вы указали.

 

Расмотрим пример программы, мы хотим в функции поменять местами значения двух переменных, которые находятся ВНЕ функции. Для этого используем унарный оператор & и передадим функции адреса этих двух переменных. Это называется передача указателей функции.

 

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'

 

 



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы