Pointer Frage
-
Hallo.
1245060 + 1 = 1245061
Wieso gibt das Programm 1245064 aus ?addr von c: 1245060
addr von c + 1 : 1245064 <--- Wieso 1245064 und nicht 1245061
addr von f: 1245064
200Drücken Sie eine beliebige Taste . . .#include <iostream> using namespace std; int main(int argc, char* argv[]) { int *f; int c=200; int *addr; f = &c; cout<<"addr von c: " << &c <<endl; cout<<"addr von c + 1 : " << &c+1 <<endl; cout<<"addr von f: " << &f <<endl; addr = f; cout<<*addr; system("PAUSE"); return 0; } //---------------------------------------------------------------------------
-
weil ein int 4 byte groß ist auf deinem System. Wenn du einen int* inkrementierst wird er "ein int weiter" gesetzt - also 4 Byte.
Wenn du das Ding mit reinterpret_cast auf einen char* castest und den inkrementierst, gehts ein byte weiter. bei einem double* sinds dann mehr (z.B. 12, eben sizeof(double))