2016-04-30 13 views
2

Ich versuche, die Adresse der Variablen abc und das Programm zu cout, wenn ich die Adresse Variable int * App entfernen, dann wird cout es die Adresse von abcPointers und cout Adresse einer Variablen

int main() 
{ 
    int abc = 2; 


    cout << &abc; 

} 

Ich habe keine Ahnung, warum die Existenz einer anderen unabhängigen Adressvariablen würde es beeinflussen. Bitte beraten.

+0

bitte spezifizieren "funktioniert nicht" – user463035818

+0

Welche Adresse hält 'app', wenn Sie' * app = 3'? Nicht definiert. –

+0

App zeigt nicht auf eine gültige Speicheradresse. Im ersten Fall müssen Sie deswegen einen Segmentierungsfehler bekommen. – Varun

Antwort

4

Das Problem liegt hier:

*app=3; 

dies wahrscheinlich ein Segmentation Fault, nicht definiertes Verhalten verursachen.

Wenn Sie es entfernen, ist es sinnvoll, die erwartete Ausgabe zu sehen.

+1

... und auch hier 'cout << * app << endl << & * app' –

+0

Ja natürlich @bkVnet. Da '* app = 3;' zum Scheitern verurteilt ist, druckt w.r.t. das wird problematisch sein. Denkst du, ich sollte das in meine Antwort aufnehmen? – gsamaras

+0

Nein, ich habe nur das Offensichtliche erwähnt. Sie haben den Punkt gut angesprochen. –

2

Was versuchst du zu tun? Dies ist ein nicht definiertes Verhalten.

int *app; // pointer is not initialized. 
int abc = 2; 
*app=3; // de-referencing an uninitialized pointer. Bad.