Разница между объявлением переменных, таких как & ref = a и ref = & a в C ++ - PullRequest
0 голосов
/ 07 апреля 2020

Меня немного смущают два типа, с которыми мне приходилось сталкиваться, например, если int a = 0, что означает «& ref = a» и на что ссылается «ref = & a»?

служат ли они одной и той же цели хранения адреса переменной?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

&ref=a: это ссылочная переменная означает, что это другое имя для существующей переменной. Его можно использовать как обычные переменные. Память управления ссылками, оставленными до компилятора

*ref=&a: это переменная-указатель, которая содержит адрес другой переменной. Указатели используются для хранения и управления адресами динамически распределенных блоков памяти.

И мой ответ - ДА. Оба должны служить одной и той же цели для хранения переменной, поскольку в большинстве компиляторов ссылка может восприниматься как сам указатель на константу. ,

0 голосов
/ 07 апреля 2020

См.

int a=10;
int &ref=a;
std::cout<<ref;

. Он напечатает 10

int a=10;
int *ref=&a;
std::cout<<ref;

. Он напечатает адрес a, если вы хотите, чтобы значение вы указали как *ref, то есть разыщите его.

#include<iostream>
#include<fstream>

void fun(int &var)
{
    var=100;
}

int main()
{
    int a=10;
    fun(a);    //no need & here
    std::cout<<a;
    return 0;
}

и посмотрите это

#include<iostream>
#include<fstream>

void fun(int *var)
{
    *var=100;
}

int main()
{
    int a=10;
    fun(&a);    //need & here
    std::cout<<a;
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...