C言語でのスタックを実装する際、何故グローバル領域でスタックの先頭のポインタを宣言しなければいけないのでしょうか。Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。登録してこのコミュニティに参加するどなたでも質問していただけますどなたでも回答していただけます最もよい回答には賛成票が入り、最上位に上がりますホーム質問タグユーザーC言語でのスタックを実装する際、何故グローバル領域でスタックの先頭のポインタを宣言しなければいけないのでしょうか。3,188件6C言語でスタックを実装をしようと思い、いくつかのwebページを参考にして、以下のように実装しました(このコードは正常に動作します)。このコードだと、スタックを複数使用する場合、その個数分stack_root(スタックの先頭)をグローバル領域で定義しなければいけません。そこで、stack_rootの宣言をメイン関数内に移動し、以下のようなコードを書きました(このコードは正常に動作しません)。*/pop関数やpush関数で関数の先頭のポインタを渡せば良いと思ったのですが、何故このコードは正常に動作しないのでしょうか。追記774RRさん、ありがとうございます。*/というようにして、ポインタ変数のポインタをpop()やpush()に渡すことで解決しました。ありがとうございました。関数の引数は値渡し(複写渡し)であるため、です。変更されて帰ってくることを期待している構造になっています。