0

私はポインターの概念に少しバグがあります。

DoubleLinkList を操作しようとしているとき

void headInsert(DoubleLinkList head, int theData) 

このことは機能していません。しかし、これは機能しています:

void headInsert(DoubleLinkList*& head, int theData)

なぜ?

4

3 に答える 3

3

これはポインターへの参照です。つまり、ポインターは参照によって渡されます。これは、関数内のポインターへの変更が、関数が戻ったときにも存続することを意味します。

対照的に、ポインターが値によって渡される場合 (つまり、参照なし&)、関数が呼び出されると、実際には新しいローカル変数にコピーされます。これは、ポインターが変更された場合、変更されるのはこのローカル コピーのみであり、関数の外部から渡されたポインターは変更されないことを意味します。

于 2013-05-24T10:35:51.787 に答える
2

ポインターを参照として渡すと、関数はポインターが指しているオブジェクトを変更できます (ポインターが値で渡された場合、これは不可能です)。

于 2013-05-24T10:37:16.463 に答える
0

右から左に読んでください。

最初のケースheadではDoubleLinkList.

2 番目のケースheadは、へのポインタへの参照DoubleLinkListです。

于 2013-05-24T10:42:32.923 に答える