c言語でポインタ変数を使った場合と普通の変数を使った場合の2通りでprogram()という関数をmainから呼び出した所、上はsegmentationエラーになり下は普通に実行されました。
僕の認識では上と下でやっていることは同じだと思っていたのですが、なぜエラーになったのでしょうか?教えていただけますと幸いです????♂️
↓これはエラーになる
c
1Node *program() { 2 Node *head; 3 Node *node = stmt(); 4 head->next = node; 5 while (! at_eof()){ 6 node->next = stmt(); 7 node=node->next; 8 } 9 return head->next; 10}
↓これは正常に動作する。
c
1Node *program() { 2 Node head; 3 Node *node = stmt(); 4 head.next = node; 5 while (! at_eof()){ 6 node->next = stmt(); 7 node=node->next; 8 } 9 return head.next; 10}
c
1struct Node { 2 3 Node *next; // Next node 4 5};
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/12 09:12