Speicherabbild und Adressen



  • Hallo Leute,

    habe das hier schon ausversehen im C# und.NET Forum gepostet.

    hab eine "kleine" Aufgabe die ich nicht so ganz verstehe, also was ich genau machen soll.

    Geben Sie das Speicherabbild des folgenden Programms vor Aufruf von printf() an.

    #include <stdio.h>
      main()
    {  double vek[3] = { 1.2, 3.0, 5.2 };
       double *v0 = &vek[0];
       double *v1 = &vek[1];
       double *v2 = &vek[2];
       double sum;
         sum = *v0 + *v1 + *v2;
       printf("Summe: %f\n", sum);
       return 0;
    }
    

    Hinweis: Die Adressen der Variablen lassen sich durch geeignete Ausgabeanweisungen bestimmen.

    Ich verstehe nicht wirklich was gemeint wird. Auf das Ergebnis kommt man ja auch so, wenn man sich den Code anschaut.
    Oder geht es speziell um die Speicherstellen der Variablen? Ich verstehe das irgendwie nicht...Habe sowas noch nie gemacht.

    Bisher habe ich folgendes gemacht.

    printf("vek: %d\n", vek);
    printf("vek[0]: %d", &vek[0]);
    printf("v0: %d", v0);
    printf("sum: %d", &sum);

    Wird das so gemeint?

    Habe in Wikipädia noch etwas gelesen und bin darauf gekommen:

    printf("Summe: %[b]p[/b]", [b]&sum[/b]);
    

    Vielen Dank fürs Lesen!



  • Ja, ich würde mir auch einfach die Adressen der Variablen ausgeben lassen. Die Aufgabe ist eh albern. Was, wenn der Compiler das ganze Zeugs wegoptimiert? Was ist mit alignment? So oder so, das Ergebnis ist mindestens abhängig von Compiler und (Betriebs-)System.


Anmelden zum Antworten