はい、それは理にかなっています。通常、参照はポインターとして扱うことができます (いくつかの制限があります)。したがって、例のポインターへの参照を変更できます。もちろん、構文も変更されますが、気にする必要はありません。あなたの例は次のようになります。
void tsplit(tnode t, tnode *l, tnode *r, int x)
lしたがって、違いは、 andの下にあるものは変更できますがr、ttypedef はそれを抽象化できますが、展開することはできます。
void tsplit(node* t, node** l, node** r, int x)
つまり、 の下にあるものは変更できますが、それ自体をt変更することはできません。これはと で行うことができます。つまり、 の参照先を変更することはできませんが、参照 (またはポインターへのポインター) への参照があるため、およびで変更できます。tlrtrl
ポインターよりも参照を使用する理由 ポインターは、オブジェクトの所有権の変更など、さまざまなことにも使用できるためです。構文は同じように見えますが、セマンティクスは大きく異なります。人々は物事がどのように見えるかを見るのが好きで、その背後にある意図と意味がすぐにわかります。つまり、構文からセマンティクスを差し引きます。参照は変数を渡すためにのみ使用できるため、見た目だけで何が期待できるかがわかります。