Переменные ссылки - PullRequest
       1

Переменные ссылки

1 голос
/ 26 марта 2012

Я изучаю ссылки и указатели, и что-то в этом руководстве не компилируется для меня (я использую GCC).

Хорошо, вот код:

#include <iostream>

using namespace std;

int main()
{
int ted = 5;
int andy = 6;

ted = &andy;

cout << "ted: " << ted << endl;
cout << "andy: " << andy << endl;
}

Вывод компилятора говорит: «ошибка: недопустимое преобразование из« int * »в« int »» Я также попробовал строку = v; v = & andy; но это тоже не сработало.

Как я могу назначить адрес памяти переменной?

Ответы [ 2 ]

5 голосов
/ 26 марта 2012

Указатель содержит адрес памяти. В этом случае вам нужно использовать указатель на int: int*.

Например:

int* ptr_to_int;

ptr_to_int = &andy;

std::cout << ptr_to_int  << "\n"; // Prints the address of 'andy'
std::cout << *ptr_to_int << "\n"; // Prints the value of 'andy'
0 голосов
/ 26 марта 2012

Указатель int отличается от int. Вы не можете назначить указатели на целые числа без некоторых неприятных уловок. Я приведу несколько примеров того, что вы, вероятно, хотите сделать.

Пример указателя:

#include <iostream>

using namespace std;

int main()
{
int ted = 5;
int andy = 6;

int * ptr = &andy;

cout << "ted: " << ted << endl;
cout << "andy: " << andy << endl;
cout << "ptr: " << *ptr << endl;
}

Пример ссылки:

#include <iostream>

using namespace std;

int main()
{
int ted = 5;
int andy = 6;

int & ref = andy;

cout << "ted: " << ted << endl;
cout << "andy: " << andy << endl;
cout << "ref: " << ref << endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...