obj * volatile *my_free_list ;

Ein Satz, den ich heute gesehen habe, als ich mir die STL-Quellcode-Analyse angesehen habe: obj * volatile *my_free_list;

Zunächst müssen wir eines verstehen: Volatile ist ein Feature-Modifizierer (Typspezifizierer) . Die Funktion von Volatile besteht darin, als Anweisungsschlüsselwort sicherzustellen, dass diese Anweisung aufgrund der Compileroptimierung nicht weggelassen wird und das direkte Lesen erfordert Wert jedes Mal. Eine flüchtige Variable bedeutet, dass sich diese Variable unerwartet ändern kann, sodass der Compiler den Wert dieser Variablen nicht annimmt.

Dies ist die Beschreibung der Baidu-Enzyklopädie.

Schauen wir uns die Syntax noch einmal an: Wenn wir einen Zeiger normal setzen: void *p;

Wir wissen, dass void der Rückgabewerttyp ist, * als Zeichen des Zeigers angesehen werden kann, p der Variablenname des Zeigers ist und der Wert von p eine Adresse ist, das heißt, wir können definitiv eine Adresse erhalten durch diese Leere *p in der Zukunft;

Vergleichen wir obj * volatile *my_free_list; wir können es wie folgt sehen: obj * (volatile *my_free_list);

Werfen wir einen genaueren Blick auf volatile *my_free_list. Unterscheidet sich das nicht von void *p?

Und wir können definitiv eine Adresse über volatile *my_free_list erhalten. Fühlt es sich ähnlich an wie p?

Das bedeutet also:

        ungültig * p

        obj * (flüchtig *my_free_list)

Als letztes sei noch erwähnt, dass C++-Zeiger rechtsassoziativ sind

Supongo que te gusta

Origin blog.csdn.net/pan_1214_/article/details/127787599
Recomendado
Clasificación