Ich habe diese beiden nahezu identischen Bits von C++Zeiger Aritmetic ändert sich abhängig von der Ausgabe?
#include <iostream>
using namespace std;
int main(){
int a = 0;
int b = 1;
int c = 2;
int d = 3;
int *p = &a;
cout << &c << endl;
cout << *(p+1);
}
mit dem Ausgang:
0x7ffd7b16998c
und
#include <iostream>
using namespace std;
int main(){
int a = 0;
int b = 1;
int c = 2;
int d = 3;
int *p = &a;
cout << &d << endl;
cout << *(p+1);
}
die die Ausgabe erzeugt:
0x7ffdb7ea105c
Warum der Wert von * ist (p + 1) davon abhängen, welche I-Ausgang vorher? Wenn ich die Linie
cout << &c << endl;
vollständig löschen i die erwartete 1 als Ausgang erhalten.
Was auf der Erde geschieht?
Beide rufen * undefiniertes Verhalten * auf, so dass Sie nichts (oder alles) erwarten können. – UnholySheep
Okay, ich habe nur damit herumgespielt. Es erzeugt dieses Verhalten zuverlässig, weshalb ich überrascht war. – pindakaas
danke für den Link @usr – pindakaas