まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
リスト構造を理解しようと思って0からのゲームプログラミングさんのリスト構造 3を
読んでいるのですが、ここで出てくるのがポインタ。
解説本を読んでみると、使えるととても便利だけどC言語を覚える上での難関とも書いています。
で、本を読んでみると書いてある事は理解出来るんですが、全然便利そうじゃないんですよね。
(本当は便利なんでしょうが、私が理解出来ていないだけです。)
ポインタというのは、オブジェクトのアドレスを入れておく変数って事みたいなのですが
具体的にどういう風に使うのか?ってのがわからないので、ここでポインタを使えば良いんだ!
という事が全然わかりません^^;
ある解説には関数に普通の変数を引数として渡して数値を変えても、送り側の変数は変わらない。
でもポインタを引数として渡せば、送り側の変数も変化する。。。みたいな事がサンプルとして
載ってるのですが、なんかワザと難しくしてるんじゃないのか?とは思うのですが
ポインタって便利!とは思えません。
訳の解っていない私は、グローバル変数を作って変化させれば良いのでは?
なんて思ったりする訳です。
HSPの場合は、変数を書けばその場で使えますし、その変数をどこで変更しても問題ありません。
コレって解りやすいですよね。
でも、プログラムが大きくなってきて変数の数が増えると、簡単に変化できる事が仇となり
変数の管理がとても大変になります。
多分、こういう事を防ぐ意味もポインタにはあるんじゃないのだろうか?と勝手に考えています。
全然的外れな事を言ってるのかもしれませんが(汗)
なんにせよ頭で考えているだけでは解らないので、0からのゲームプログラミングさんの
リスト構造 3を解析しようと思って、こんな感じで一行づつ命令の意味をコメントしていってます↓
で、プログラムの流れを追って行くのですが、だんだんと頭がこんがらがってきて
訳がわからなくなって、嫌になって、ゲームして現実逃避してしまいます^^;
読んでいるのですが、ここで出てくるのがポインタ。
解説本を読んでみると、使えるととても便利だけどC言語を覚える上での難関とも書いています。
で、本を読んでみると書いてある事は理解出来るんですが、全然便利そうじゃないんですよね。
(本当は便利なんでしょうが、私が理解出来ていないだけです。)
ポインタというのは、オブジェクトのアドレスを入れておく変数って事みたいなのですが
具体的にどういう風に使うのか?ってのがわからないので、ここでポインタを使えば良いんだ!
という事が全然わかりません^^;
ある解説には関数に普通の変数を引数として渡して数値を変えても、送り側の変数は変わらない。
でもポインタを引数として渡せば、送り側の変数も変化する。。。みたいな事がサンプルとして
載ってるのですが、なんかワザと難しくしてるんじゃないのか?とは思うのですが
ポインタって便利!とは思えません。
訳の解っていない私は、グローバル変数を作って変化させれば良いのでは?
なんて思ったりする訳です。
HSPの場合は、変数を書けばその場で使えますし、その変数をどこで変更しても問題ありません。
コレって解りやすいですよね。
でも、プログラムが大きくなってきて変数の数が増えると、簡単に変化できる事が仇となり
変数の管理がとても大変になります。
多分、こういう事を防ぐ意味もポインタにはあるんじゃないのだろうか?と勝手に考えています。
全然的外れな事を言ってるのかもしれませんが(汗)
なんにせよ頭で考えているだけでは解らないので、0からのゲームプログラミングさんの
リスト構造 3を解析しようと思って、こんな感じで一行づつ命令の意味をコメントしていってます↓
で、プログラムの流れを追って行くのですが、だんだんと頭がこんがらがってきて
訳がわからなくなって、嫌になって、ゲームして現実逃避してしまいます^^;
PR
この記事にコメントする
無題
ぶっちゃけ、動けばグローバル変数でもいいと思いますが、ポインタじゃないと渡せない値とかあると思います。
配列は関数の引数として渡せないから代わりにポインタで渡してやるとか、戻り値が複数の場合はretrunで返せないのでポインタで返してやるとかといったことでしょうか。
あとは記事にも書いてあるリスト構造ですが、弾だけじゃなくて敵も自機も、その他の処理も全部リスト構造でつなげていくと、各構造体がどの関数を呼び出すかということを変数としてその構造体の中に保存しなければならないので、これも呼び出すべき関数のアドレスをポインタで表現するしかないです。
とか言いつつ、私も「グローバル変数を関数間で共有するのはなんか気持ち悪い」ぐらいの認識で使っているのですが。確かにグローバル変数を使うより一見してわかりにくいですよね。
配列は関数の引数として渡せないから代わりにポインタで渡してやるとか、戻り値が複数の場合はretrunで返せないのでポインタで返してやるとかといったことでしょうか。
あとは記事にも書いてあるリスト構造ですが、弾だけじゃなくて敵も自機も、その他の処理も全部リスト構造でつなげていくと、各構造体がどの関数を呼び出すかということを変数としてその構造体の中に保存しなければならないので、これも呼び出すべき関数のアドレスをポインタで表現するしかないです。
とか言いつつ、私も「グローバル変数を関数間で共有するのはなんか気持ち悪い」ぐらいの認識で使っているのですが。確かにグローバル変数を使うより一見してわかりにくいですよね。
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事