Adressen im Speicher



  • // Klasseneinfuehrung.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    #include <stdio>
    #include "stdafx.h"
    
    using namespace std;
    
    struct Datum { // Repräsentation
    	int t, m, j;
    };
    
    // Objekt initialisieren
    void initDatum(Datum& d, int tt, int mm, int jj)
    {
    	d.t = tt;
    	d.m = mm;
    	d.j = jj;
    }
    
    // Tag(e) addieren
    void addiereTage(Datum& d, int n)
    {
    	d.t = d.t+n;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        Datum Heute;
        initDatum(Heute, 1,1,2004U);
    
    	addiereTage(Heute, 12);
    
    	cout << "Adresse von Heute: " << &Heute << endl; 
    	cout << "Adresse von Heute t: " << &Heute.t << endl;
    	cout << "Adresse von Heute m: " << &Heute.m << endl;
    	cout << "Adresse von Heute j: " << &Heute.j << endl;
    
    	return 0;
    }
    

    Die Adressen von "Heute" und "Heute t" sind gleich. Wieso?
    Ich möchte es verstehen... Danke 🙂

    Edit: Der Quelltext ist Müll. 😉 Nur zum Testen, also net lachen plz! :p



  • Hallo,

    die Anfangsadresse der Struktur ist gleichzeitig die erste Adresse der ersten Membervariablen, und das ist nunmal t.



  • Natürlich nur, wenn es eine Struktur ist, wie sie auch in C vorkommen könnte (also ohne Methoden oder Vererbung).



  • Das ist Zufall. Je nach Compiler und Plattform kann das locker auch anders sein.



  • Weil sie an der gleichen Adresse gespeichert sind.

    Bye, TGGC (Der Held lebt!)



  • 0xdeadbeef schrieb:

    Das ist Zufall. Je nach Compiler und Plattform kann das locker auch anders sein.

    Nein, nicht bei POD.


Anmelden zum Antworten