Leerer Zeiger abbauen

9

In der Hoffnung, die Antworten besser zu verstehen gegeben in diese Post, kann mir bitte jemand erklären, wenn die folgende Umlaufpufferimplementierung ist möglich, und wenn nicht, warum nicht.

%Vor%

Ich verstehe, dass die LHS in Char umgewandelt werden muss, damit ich es kann Dereferenzieren Sie den leeren Zeiger. Ich verstehe auch, dass dieser Code Fragment:

%Vor%

gibt die Adresse des Elements 'buffer- & gt; start' der Elemente an Array, das ich auch dereferenzieren möchte, um an die Inhalt dieser Adresse. Oder zumindest nehme ich davon K & amp; R.

Wie kann ich dem Compiler sagen, dass der Inhalt von Der Speicher an dieser Adresse ist ein Zeichen, und das ist in Ordnung es deneferenzieren? Da ist etwas los hier, ich tue es einfach nicht verstehe.

    
Zack 04.12.2012, 01:30
quelle

2 Antworten

13

buffer->elements ist auch ein void * , also musst du es umwandeln, bevor du etwas damit machen kannst:

%Vor%     
Chris Dodd 04.12.2012, 01:48
quelle
5
  

Wie kann ich dem Compiler mitteilen, dass der Inhalt des Speichers an dieser Adresse ein Zeichen ist und dass es in Ordnung ist, ihn zu dereferenzieren?

Nun, Sie haben es bereits auf der linken Seite dieser Zeile getan:

%Vor%

Um buffer->elements[n] zu deaktivieren, müssen Sie das ebenfalls umsetzen.

%Vor%

Nun stellt sich die Frage, ob diese Besetzung korrekt ist oder nicht. Ich kann Ihnen das nicht sagen, da Sie die Initialisierung von buffer->elements nicht veröffentlicht haben.

    
Ed S. 04.12.2012 01:35
quelle