ссылка в с ++ путаница

0
#include <iostream>
using namespace std;

int main()
{
    int i=9,k=8;

    int &q=i;

    q=k;

    cout<<i<<"\n"<<q<<"\n";

    return 0;
}

Вывод:

8
8

Но в моей книге дано "q = k изменяет только значение i, а не q. Это связано с тем, что q, являющееся ссылкой, автоматически отменяется как (* q). Следовательно, значение в адресе, хранящемся в q, заменяется по значению я "Но, как вы видите, значение q также изменяется. Разве это неправильно?

  • 0
    Ссылки не могут быть пересмотрены.
Теги:
reference

4 ответа

2
Лучший ответ

q, как ссылка, не изменяется. Другими словами, он относится к i, всегда, навсегда и всегда (пока он не выходит за рамки). Вы не можете заставить q ссылаться на другой объект. Это означает, что "значение [sic?] Никогда не изменяется". "Значение" q является адресом i. Когда вы назначаете q там, вы действительно назначаете i.

Вы напечатали там значение i, а затем значение объекта, к которому относится q (это i).

  • 0
    Принять ответ @ user3131706
0

Когда вы инициализируете переменную типа:

int & q = i;

каждый раз, когда вы меняете i, вы меняете q и наоборот.

Ссылка q имеет одинаковое значение i, поэтому тема указывает на то же место памяти.

0

Поскольку q является ссылкой на i, это означает, что это просто псевдоним i (другое имя для i).

Так что независимо от того, какое значение у i будет иметь один i тот же q !

0

Когда вы инициализируете ссылку, как следует

int i = 9;

int &q =i;

q просто становится другим псевдонимом (вы можете сказать ник) i, поэтому, если какое-либо изменение происходит в q, оно будет отражать и в i, и наоборот.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню