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))


Anmelden zum Antworten