あるポインター構造体ポイントから、メモリを割り当てられた別の構造体へのポインターがある場合、関数呼び出しの後に何が起こるでしょうか? この質問をするように導く構造体について以前に質問しました: 関数内の構造体ポインターのスコープ
例えば:
struct example{
//variables and pointers
struct clip *next;
}*Head
そして、関数にデータ型構造体のポインターがあります。
struct example *newNode=malloc(sizeof(struct example));
同じ関数で、最初のノード (ヘッド) を 2 番目のノード (新しいノード) にリンクします。
Head->next=newNode;
関数が終了した後もリンク/ポインティングは保持されますか? それが理にかなっているのかどうかはわかりませんが、リンクリストの最後に新しいノードを追加するときは、最初にリンクリストを調べて、それがどこで終了するかを確認する必要があります (次のポインター = NULL)。
例えば:
void insert_at_end(){
//We have a pointer cp that goes through the linked list, initially cp->next points to `null so we create a newnode right away`
//struct example cp and newnode gets malloc'd here
if(Head != NULL){
cp=Head;
while(cp->next !=NULL){
cp=cp->next;
}
cp->next=newNode;
else{
//We link the head to the newNode `because we don't want to change the head for each new node added.`
head=newNode;
}
}
しかし、リストの最後に newNode を追加するたびに関数を終了するので、関数に再び入り、リンクリストを調べて終了場所を確認するとどうなるでしょうか? cp->next が何を指しているのかをどのように知るのでしょうか?