Передать по ссылке - PullRequest
       54

Передать по ссылке

0 голосов
/ 04 марта 2019

Мой вопрос очень прост, и я считаю, что это понятно.Я сделал этот простой фрагмент, чтобы проиллюстрировать мой конфликт, когда я передаю значения по ссылке.

int main() {
 int a = 1;
 int &b = a;
}

Я знаю, что это правильный способ сделать это, но как это имеет смыслвозьмите адрес b и сделайте его равным значению a .По логике это должно быть: int &b = &a;

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Многие операторы являются контекстно-зависимыми.«Оператор» & может означать три разные вещи в зависимости от контекста:

  1. Может использоваться при определении ссылки

    int& r = a;  // The variable r is a reference of the variable a
    
  2. Может использоваться для получения указателя на что-либо

    int* p = &a;  // Here & is the address-of operator which returns a pointer
                  // Here it makes p point to the variable a
    
  3. Это может быть оператор поразрядно И

    0x53 & 0x0f    // Here's a bitwise AND operation, the result is 0x03
    
0 голосов
/ 04 марта 2019

Вы ошиблись синтаксисом.Это неприятно, но & является одновременно адресом оператора и токеном, означающим "referente to".

int &b = a;

Это объявляет переменную b типа int& (ссылка на int) и инициализируется a.Нет адреса вообще.

...