私はポインターの概念に少しバグがあります。
DoubleLinkList を操作しようとしているとき
void headInsert(DoubleLinkList head, int theData)
このことは機能していません。しかし、これは機能しています:
void headInsert(DoubleLinkList*& head, int theData)
なぜ?
私はポインターの概念に少しバグがあります。
DoubleLinkList を操作しようとしているとき
void headInsert(DoubleLinkList head, int theData)
このことは機能していません。しかし、これは機能しています:
void headInsert(DoubleLinkList*& head, int theData)
なぜ?
これはポインターへの参照です。つまり、ポインターは参照によって渡されます。これは、関数内のポインターへの変更が、関数が戻ったときにも存続することを意味します。
対照的に、ポインターが値によって渡される場合 (つまり、参照なし&
)、関数が呼び出されると、実際には新しいローカル変数にコピーされます。これは、ポインターが変更された場合、変更されるのはこのローカル コピーのみであり、関数の外部から渡されたポインターは変更されないことを意味します。
ポインターを参照として渡すと、関数はポインターが指しているオブジェクトを変更できます (ポインターが値で渡された場合、これは不可能です)。
右から左に読んでください。
最初のケースhead
ではDoubleLinkList
.
2 番目のケースhead
は、へのポインタへの参照DoubleLinkList
です。