質問: istack_new(1); //ここがよくわからない。試しに1を入れてます ``` 3 istack_new()の中で配列サイズを設定するというのはどういうことなのか ### 試したこと ``` コンパイル $ gcc8 istack.c test_of_fullstack.c ``` ``` 実行 2で(1)としたとき $ ./a.out 012345678 いっぱい $ ./a.out 012345 まだ余裕あり (10)としたとき $ ./a.out 012345678 いっぱい $ ./a.out 012345 まだ余裕あり ``` 個人的には 2で(1)としたら、常にいっぱい (2)としたら、 $./a.out 0 まだ余裕あり $./a.out 01 いっぱい と出るのを想定していました。そもそも確認用コードが間違っている可能性もありますが。。。よろしくお願いします。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: > > p->size = sizeof(p->arr); //ここが怪しい > > > sizeof(p->arr)は、arrのサイズ(=ポインタのサイズ、固定値)になります。arrが指す領域のサイズを入れようとしているようですが、スタックの要素数を入れるのがいいでしょう。例) p->size = size; というか > > bool istack_full(istackp p) { return p->ptr > p->size; } > > > こっちの関数はそういう想定になってますよね。 2()ないの数字を変えても出力結果が同じ理由 前述の通り