C ++ - Какая разница между назначением переменной другой переменной и назначением переменной ссылочной переменной? - PullRequest
0 голосов
/ 08 января 2019

Скажи, что у меня есть:

int a = 1
int b = a
int& c = a

В чем разница между b и c? Является ли b отдельной копией a?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вот разница между тремя. Когда вы назначаете b равным a, вы действительно создаете отдельную копию. Однако если вы измените a, то b останется прежним. Например, если вы увеличите a до 2, а затем напечатаете результаты, a будет равно 2, но b все равно будет равно единице. С другой стороны, поскольку c инициализируется как ссылка на a.

Всякий раз, когда изменяется значение, c также меняет свое значение. Вы также можете изменить значение a, изменив значение c. Для получения дополнительной информации об указателях и ссылках, пожалуйста, прочитайте эту статью http://www.cplusplus.com/doc/tutorial/pointers/

Вот пример кода

#include <iostream>

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

    std::cout << " a = " << a << ", b = " << b << ", and c = " << c << std::endl;
    a++;
    std::cout << " a = " << a << ", b = " << b << ", and c = " << c << std::endl;
}

Выход:

a = 1, b = 1, and c = 1
(after increment) a = 2, b = 1, and c = 2
0 голосов
/ 08 января 2019

Различия:

  1. b является копией значения -> правильно. Где b имеет свой собственный адрес памяти, где он хранит свое значение b = значение a. это просто присвоение переменной.
  2. c не может копировать только значение a, но представляет полностью a. поэтому после того, как вы сделали int & c = a; Теперь у нас есть 2 человека, но одно имя. И у вас есть полный контроль над другим именем c.

Удивительно, но вы можете проверить с помощью кода ниже

int main()
{
    int a =2;
    int b =a;
    int&c =a;
    int d = 3;
    c =d;
    cout <<"a="<<a<<" b="<<b<<" c="<<c<<endl;
}

напечатает

a=3 b=2 c=3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...