Указатели и ввод в пользовательских функциях - PullRequest
0 голосов
/ 13 июля 2020

Здесь я вызвал функцию add() по ссылке, и я сомневаюсь, как она отправляет ввод в этом случае. Я имею в виду, использует ли он & p = a и представляет ли &(any variable) адрес переменной?

#include<iostream>
using namespace std;
void add(int &p)
{
    p++;
}
int main()
{
    int a=55;
    add(a);
    
    cout<<a;
    
    return 0;
}

1 Ответ

2 голосов
/ 13 июля 2020

обозначает ли & (любая переменная) адрес переменной?

Да.

Что такое ссылки?

Проще говоря, ссылки - это просто псевдонимы. Это означает, что p - это просто еще один способ ссылаться на на a. Любые изменения, внесенные вами в p или a, будут отражены в другом. Однако вы не можете переназначить ссылочную переменную на что-то другое. Ссылки инициализируются только один раз и затем используются повторно.

Пример:

int main()
{
    int a=55;
    int &p = a; //p is referring to a
    p++;        // a = 56, p = 56
    a = 100;    // a = 100, p = 100
    
     //address of both are same as well
    cout << &a << '\n';
    cout << &p << '\n';
    
    int x = 33;
    p = &x; // error
    &p = x; // error, can't change
    p = x; //ok, but now a = 33, p = 33, (p is not referring to x)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...