2012-03-25 3 views
1

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

Итак, вот код:

#include <iostream> 

using namespace std; 

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

ted = &andy; 

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

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

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

+0

Будьте очень осторожны, говоря о ссылках, когда вы имеете в виду указатели. – Matt

+0

Также будьте очень осторожны, когда говорите о адресах памяти, когда имеете в виду указатели. – Pubby

ответ

5

Указатель содержит адрес памяти. В этом случае вам нужно использовать указатель на 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

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; 
} 
Смежные вопросы