3 Stimmen

Was lautet die Adresse von buf (der lokalen Variablen in der Hauptfunktion)?

Ich hatte Übungen aus Programmierung in C-Kursen und folgende Frage befolgt:

Was ist die Adresse von buf (der lokalen Variablen in der Hauptfunktion)? Geben Sie die Antwort entweder im hexadezimalen Format an (0x gefolgt von 8 "Ziffern" 0–9 oder a-f, wie 0xbfff0014) oder im dezimalen Format. Beachten Sie hierbei, dass wir die Adresse von buf möchten, nicht dessen Inhalt.

Der Code sieht wie folgt aus:

int main(int argc, char *argv[]) {

   while(1) {
       char  buf[1024] = {0};
       int r;
    ....

Also habe ich gdb ausgeführt und einfach an der Zeile char buf[1024] einen Breakpoint gesetzt und gdb eingegeben.

 p &buf

und das hat mir ein Ergebnis gegeben: 0xbffff0f0

aber wenn ich diese Nummer in diesem Quiz verwende, erhalte ich als Ergebnis, dass dieser Wert inkorrekt ist.

Meine Frage ist: Ist dies (p &buf) die Adresse der buf-Variablen? Oder, wenn nicht, warum nicht?

Die Übungen werden auf einer vorbereiteten VirtualBox-Maschine durchgeführt, also denke ich, dass jeder die gleichen Adressen haben sollte

2voto

Weather Vane Punkte 32572

Es gibt keine korrekte numerische Antwort. Die Adresse kann von Zeit zu Zeit variieren. Du sagst, es ist eine Programmieraufgabe. Die folgenden drei Aussagen haben mir alle dieselbe Adresse gegeben.

printf ("0x%08x\n", buf);
printf ("0x%08x\n", &buf[0]);
printf ("0x%08x\n", &buf);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X