6年前こんな方法もあります。動的確保はしなくても良いですよ~。このトピックのだいぶ前に書いたんで見なおしてみてください。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。アドレス値ではなく、先頭アドレスを返すからですか?アドレス値と先頭アドレス値のどこが違うのですか?(10分もたたないうちにレスがきたってことは、何となくで答えているよね^^;)&をつけたならばどちらにしろその変数の先頭アドレスですよ。リンク先のページを参照して、もう一度回答願います。自分のポインタの理解があやふやなので訳のわからない回答してしまいました。返信ありがとうございます。こんな方法もあります。);質問がたくさんあります...。player_pool_usedはなんですか?ただのカウンタですか?簡単にいえばカウンタです。player_poolの領域をどこまで使ったかを表しています。1000を超えたらNULLを返すんですか?別に1000でなくても、PLAYER_POOL_MAX(返せるplayer_tの数の最大値)を10000にしても100000にしてももっと多くしても構いません。player_pool_usedがPLAYER_POOL_MAX以上になったら(超えたらとは書いていません)、もうplayer_poolの領域を全て使ってしまい、返せる領域が残っていないということなので、NULLを返します。エラーとして、exit(1);などでプログラムを終了しても構いません。返信ありがとうございます。動的確保はしなくても良いですよ~。このトピックのだいぶ前に書いたんで見なおしてみてください。確認したら書いてありました。みけCATさんの「メモリを確保すれば、アクセス違反にならない実装ができるでしょう。player_pool_usedはなんですか?ただのカウンタですか?簡単にいえばカウンタです。player_poolの領域をどこまで使ったかを表しています。1000を超えたらNULLを返すんですか?別に1000でなくても、PLAYER_POOL_MAX(返せるplayer_tの数の最大値)を10000にしても100000にしてももっと多くしても構いません。player_pool_usedがPLAYER_POOL_MAX以上になったら(超えたらとは書いていません)、もうplayer_poolの領域を全て使ってしまい、返せる領域が残っていないということなので、NULLを返します。エラーとして、exit(1);などでプログラムを終了しても構いません。詳しい解説ありがとうございます。みけCATさんがヒントくれてますね。その対応をすれば、失敗はしなくなると思いますがどうでしょう?No.103のsoftyaさんのレスも見てくださいね。返信ありがとうございます。わからないですが、&をつけると参照渡しになって変数の値を書きかえるから、ですか?そこで思考停止せずに、イメージできるように図を書いてみてください。その辺りで何となくで済ましているのがポインタが理解できない原因な気がします。図をみんなに見せれば問題点を指摘してくれます。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。わからないですが、&をつけると参照渡しになって変数の値を書きかえるから、ですか?よくわからないですが、というのが凄い不安です。&をつけないでも、ポインタであれば参照渡しになりますよ。ここはsoftyaさんの言う通り、図にしてみてください。返信ありがとうございます。そこで思考停止せずに、イメージできるように図を書いてみてください。その辺りで何となくで済ましているのがポインタが理解できない原因な気がします。図をみんなに見せれば問題点を指摘してくれます。いままで意識してメモリの図を書いたことがないのでいろいろ間違っているかもしれませんが即席で書いてみました。図の中のint~やdouble~の値を参照渡しで直接書き換えてると考えました。6年前player_tの図しかないですね。関数の引数として渡しているものも描いてください。6年前そこだけじゃなくポインタ変数との関係とか引数との関係も書かないと意味ないですね。今回の理解するのは関数間のデータの受け渡しですので。仮想の変数のアドレスも0x1000とかも書いてもらったほうが良いでしょう。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。player_tの図しかないですね。関数の引数として渡しているものも描いてください。返信ありがとうございます。そこだけじゃなくポインタ変数との関係とか引数との関係も書かないと意味ないですね。今回の理解するのは関数間のデータの受け渡しですので。仮想の変数のアドレスも0x1000とかも書いてもらったほうが良いでしょう。みけCAT様への返信に画像を添付しました。図はあのように書いてみましたが間違えているところなどがありましたらお指摘お願いします。みけCAT様への返信に画像を添付しました。図はあのように書いてみましたが間違えているところなどがありましたらお指摘お願いします。ごめんなさい、私の読解力が足りないようです。6年前この図には、不思議な要素が満載ですね。そのぐらいに理解が曖昧だと言うことなんでしょう。それが分かっただけでも図を書いた意味があったことになります。私も説明をお願いします。説明することは間違いの気づきになりやすいので、非常に意味があります。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。3D_3Dさんが以前書かれた日記にアドレス演算子(&)とポインタ型変数の関係についてコメントしたのですが、いま読み返して意味が分かりますか?途中で「あれ?」となりました。ポインタは難しいです。なんとなくでは使ってはいけないですね。頑張って理解するように勉強します。返信ありがとうございます。みけCAT様への返信に画像を添付しました。図はあのように書いてみましたが間違えているところなどがありましたらお指摘お願いします。ごめんなさい、私の読解力が足りないようです。この図には、不思議な要素が満載ですね。そのぐらいに理解が曖昧だと言うことなんでしょう。それが分かっただけでも図を書いた意味があったことになります。私も説明をお願いします。説明することは間違いの気づきになりやすいので、非常に意味があります。同じような質問なので、まとめて回答しますがよろしいですか?(例として、Player_Init()を使用しています。)Player_init()はPlayer_Init()分のメモリを確保し、そのメモリの中でさらにplayer_t分のメモリを確保する、という感じで画像を書きました。6年前まとめてで良いですよ。そのほうがこの場合は読みやすいです。それも説明してくださいね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。a,b,c[6];という変数があって、メモリにどのような感じで割り当てられているか考えてみました。a,b,c[6];という変数があって、メモリにどのような感じで割り当てられているか考えてみました。したら、「aという領域に6が代入される」であってますか?それはポインタではなく変数と配列ですね。判別しかねる内容です。代入の理解は合っています。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。6年前Player_Init関数とその引数player_tとの関係が変です。ISLeさんが示してくれた、貴方の日記にsoftyaさんが紹介してるページがありますが、もう一度見てくださいね。6年前えーと、かなりタイトルから乖離してきたので別トピックに分けましょうか?いまさらですが。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。6年前すいません、急ぎで投稿したので途中になってしまいました。d=&a;とすると、dはaの領域になるでいいですか?違いそうですね。dにはaの領域の場所(アドレス)が入ります。6年前ならないですよ。*d;も変数として存在します。ISLeさんが重要ポイントと言っていた所が伝わっていない事が分かりました。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。6年前すいません、ちょっと外出していました。返信ありがとうございます。d=&a;とすると、dはaの領域になるでいいですか?違いそうですね。dにはaの領域の場所(アドレス)が入ります。アドレスが入ると言うのはアドレスの値ですか?また、別トピックを立てますのでそちらに回答をお願いします。*d;も変数として存在します。ISLeさんが重要ポイントと言っていた所が伝わっていない事が分かりました。この話題分けませんか?わかりました。別トピックをたてます。6年前このトピックは、シューティングゲームのオブジェクトは何かから始まっていました。タイトルから乖離してしまい、このままでは収拾がつかないので、一旦解決とします。シューティングゲームのオブジェクトに関してはゲームを作りながら足りないものを追加して行くようにして勉強しようと思います。長くなりましたが、このトピックに返信して下さった皆様、本当にありがとうございました。6年前ISLeさんの学習とかは、ポインタとは別の新トピックで続けたほうが良いと思います。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。ISLeさんの学習とかは、ポインタとは別の新トピックで続けたほうが良いと思います。