2012-03-25 13 views
1

Ich lerne über Referenzen und Zeiger, und etwas in der Anleitung kompiliert sich nicht für mich (ich verwende GCC).Variable Referenzen

Okay, hier ist der Code:

#include <iostream> 

using namespace std; 

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

ted = &andy; 

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

Die Compiler Ausgabe sagt: "Fehler: ungültige Konvertierung von 'int *' auf 'int'" Ich habe auch versucht, einen String = v; v = &andy; aber das hat auch nicht funktioniert.

Wie kann ich die Speicheradresse einer Variablen zuweisen?

+0

sehr vorsichtig sein, über Referenzen sprechen, wenn Sie Zeiger bedeuten. – Matt

+0

Seien Sie auch sehr vorsichtig, wenn Sie über Speicheradressen sprechen, wenn Sie Zeiger meinen. – Pubby

Antwort

5

Ein Zeiger enthält eine Speicheradresse. In diesem Fall müssen Sie einen Zeiger auf einen Int: int* verwenden.

Zum Beispiel:

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 Ein Zeiger ist ein anderer Typ als ein int. Sie können keine Zeiger auf Ganzzahlen ohne einige böse Tricks zuweisen. Ich werde Ihnen einige Beispiele geben, was Sie wahrscheinlich tun möchten.

Beispiel eines Zeiger:

#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; 
} 

Beispiel einer Referenz:

#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; 
}