リンクされたリストクラスで、リンクされたリストの先頭を参照するポインタを保持しているとしましょう...
このコードを書くときのメンバー関数の1つで...
Node *cur = head;
cur = cur->next;
なぜ頭が変わらないのhead->nextですか?
私が書いたらcur = NULL; それは頭になりnullますか?
リンクされたリストクラスで、リンクされたリストの先頭を参照するポインタを保持しているとしましょう...
このコードを書くときのメンバー関数の1つで...
Node *cur = head;
cur = cur->next;
なぜ頭が変わらないのhead->nextですか?
私が書いたらcur = NULL; それは頭になりnullますか?
私はそれheadがであると仮定していNode *ます。この場合、cur = cur->nextどこを指すかを変更していると言うとcur、それheadが指す場所を変更していないため、リストの先頭を指すままになります。
Cur----------|
|
V next
Head -----> Item 1--------->Item 2
cur = cur->next次の結果が得られます。
Cur--------------------------|
|
next V
Head -----> Item 1--------->Item 2
あなたが書く場合:
Node *cur = head;
cur = NULL;
その後cur、何も指さず、何も起こりませんhead。
あなたが書く場合:
Node *cur = head;
cur = cur->next;
cur = NULL;
wasでない限り、同じことが起こります (cur何も指さず、何も起こらない)。headheadNULLcur = cur->next;
ポインターhead->nextをNULL介してに設定しようとしている場合は、次のように設定できます。cur
Node *cur = head;
cur->next = NULL;
あなたの混乱はポインターの性質から来ていることがわかります。と同じメモリアドレスを指すポインタをNode *cur = head;作成していると言うとき。を介して別のものに設定すると、 が指している値ではなく、 が指すもののみが変更されるため、そのままにしておきます。Nodeheadcurcur = NULLcurhead
cur->next = NULL代わりに使用すると、 whatを指すnextメンバーを変更しています。これはwhat のメンバーでもあるため、変更は にも反映されます。curnextheadhead->next
cur はポインタです。cur = cur->next; 他の場所でcurポイントを作成するだけで、なぜ頭を変える必要があるのですか?