2016-12-31 13 views
0

So habe ich eine Funktion ähnlich jener (vereinfachtes Beispiel):ändern Wert in Zeiger auf Zeiger

void somefunction(structuraltype *something) { 

    something->variable = 6; 

} 

Und wie Sie kann ich leicht Werten zugreifen sehen ->

Aber ich erkannte, dass Ich muss Zeiger auf Zeiger anstelle eines einzelnen Zeigers verwenden.
Können Sie mir bitte erklären, wie ich in dieser Situation auf den Wert zugreifen soll?

void somefunction(structuraltype **something) { 

    something???variable = 6; 

} 
+2

Warum brauchen Sie einen Zeiger auf Zeiger? –

+1

versuchen mit: (* etwas) -> Variable = 6; – eyllanesc

+0

Es gibt keinen Grund, warum die Funktion, die Sie gezeigt haben, den Zeiger auf den Zeiger setzen muss. Es benötigt auch kein einfaches Zeigerargument. Machen Sie das Argument zu einer Referenz. –

Antwort

2

Das Äquivalent dazu:

void somefunction(structuraltype* something) { 
    something->variable = 6; 
} 

dies

void somefunction(structuraltype* something) { 
    (*something).variable = 6; 
} 

Sie können das Indirektionsebene für jede Ebene gelten:

void somefunction(structuraltype** something) { 
    (*(*something)).variable = 6; 
} 

Der äußere Dereferenzierungsebene kann immer durch -> wie in Fassung:

void somefunction(structuraltype** something) { 
    (*something)->variable = 6; 
} 

Aber es ist wahrscheinlich mehr üblich einen Verweis auf eine verwenden, Zeiger als ein Ponter zu einem Zeiger:

void somefunction(structuraltype*& something) { 
    something->variable = 6; 
} 
+0

Das wird auch nützlich sein, ich werde hier zurückkommen, um jedes Mal zu überprüfen, wenn ich es brauche –

4

einfach dereferenzieren der erste Zeiger den zweiten Zeiger zuzugreifen, die Sie dann die Objektelemente zuzugreifen:

void somefunction(structuraltype **something) {  
    (*something)->variable = 6;  
} 
+0

Dies beantwortet die technische, aber es ist keine gute Richtung für einen Anfänger gehen. Würdest du einem Fahranfänger empfehlen, Wasser zu tanken, um Benzin zu sparen? Technisch gesehen ist das natürlich eine technische Antwort. –

+0

@TheSorter: Remy sammelt meiner Meinung nach nur Punkte. Sonst würde er sich darum kümmern, was er dir beibringt. –

+1

@ Cheersandthth.-Alf Warum würdest du sowas sagen? Hast du seine Arbeit gesehen? Ich denke du liegst falsch. –