今日STLのソースコード解析を見ていて見つけた一文: obj * volatile *my_free_list;
まず第一に、理解する必要があることが 1 つあります: volatile は機能修飾子 (型指定子)です。 volatile の機能は、この命令がコンパイラの最適化によって省略されないようにするための命令キーワードとして機能し、毎回価値を持ちます。揮発性変数とは、この変数が予期せず変更される可能性があるため、コンパイラーがこの変数の値を想定しないことを意味します。
百度百科の説明です。
もう一度構文を見てみましょう。通常、ポインタを設定するときは次のようになります。 void *p;
void が戻り値の型、* はポインタの符号とみなすことができ、p はポインタの変数名、p の値はアドレスであることがわかります。つまり、アドレスは確実に取得できます。将来的にはこの void *p を通じて。
obj * volatile *my_free_list; を比較してみましょう: obj * (volatile *my_free_list);
volatile *my_free_list を詳しく見てみましょう; これは void *p と何ら変わりませんか?
そして、volatile *my_free_list を通じて確実にアドレスを取得できます。これは p と似た感じでしょうか?
つまり、次のことを意味します。
ボイド*p
obj * ( volatile *my_free_list)
最後にもう 1 つ言及しておきますが、C++ ポインターは右結合です。