C zugeordnete Zeiger? Was ist das?

8

Ich habe den folgenden Code.

%Vor%

Und die Übung sagt:

  

Zeichnen Sie ein Bild der Datenstrukturen a, b, c und d (mit Inhalt),   wo Sie sehen können, was zugeteilt wurde und verwenden Sie Pfeile, um zu zeigen, wie   Zeiger sind gesetzt.

Meine Lösung ist:

%Vor%

Jedoch wurde meine Lösung nicht akzeptiert und die Antwort war " reservierter Speicher für einen Zeiger auf b, c, d, aber nicht a ". Kann mir jemand erklären, was das bedeutet?

    
Pithikos 01.12.2011, 11:34
quelle

5 Antworten

9

Es ist eine leicht kryptische Antwort, aber ich denke, die Beschwerde ist, dass das Array a nicht auf diese Daten zeigt; it enthält die Daten.

Dies könnte also erforderlich sein (ohne den Zeigerpfeil):

%Vor%

Der Name eines Arrays kann als Zeiger verwendet werden, hat aber immer noch eine etwas andere Bedeutung.

    
Graham Borland 01.12.2011, 11:39
quelle
7

Ich würde sie so zeichnen:

%Vor%

Beachten Sie, dass die a unterhalb des gesamten Arrays und nicht neben einem Pfeil liegt. Dies soll unterstreichen, dass a ein ganzes Array ist, das die Zeichenfolge selbst enthält, nicht nur einen Zeiger. Dies zeigt, dass Sie den Unterschied zwischen einem Array und einem Pointer erkennen.

    
Blagovest Buyukliev 01.12.2011 11:43
quelle
1

Der Inhalt des Speichers, der nach d zeigt, wird nicht tatsächlich bestimmt. Es muss etwas Müll enthalten sein, der von malloc() auf c

kommt     
Andrey Atapin 01.12.2011 11:44
quelle
1

Ich würde sogar versuchen zu unterscheiden, wo die Daten auf Leben hinweisen.

%Vor%     
glglgl 01.12.2011 11:57
quelle
1

Ich denke, Sie haben ziemlich genau recht:

%Vor%

Ausgaben:

%Vor%

Hinweis: Obwohl strlen() nach dem Zeichen NULL sucht, um in der Lage zu sein, ein Array von Strings und Zählern zu durchlaufen, wird das Vorkommen von NULL selbst nicht zu dem hinzugefügt Endsumme, deshalb meldet es 5 statt 6 Zeichen.

Da Ihre Antwort nicht akzeptiert wird, gibt es wahrscheinlich eine andere Form der Repräsentation, die Ihr Lehrer von Ihnen erwartet hat, für das Array a . Vielleicht sind Sie daran interessiert, mit Ihren Kollegen darüber zu sprechen, aber ich denke nicht Es ist fair zu sagen, dass Sie eine falsche Antwort gegeben haben.

    
karlphillip 01.12.2011 12:18
quelle

Tags und Links