ザビタン開発日記
2009
| 01
10月 15 (月曜日) 2007 | ||
23:17
|
背景でけたー!
|
|
13:52
|
パターン埋め関数できたかな?
|
|
うーん。これでいいかな???
で、呼び出しはこんなことしてみたり・・・
おぉぉ! でけたーーーー!!!! ━━━━━━(゜∀゜)━━━━━━ そんなわけで!!!!
init_screen側からこんなふうに呼び出すことで、最初の計算式と 同じ効果を出せましたぁ!! (^^ |
||
09:34
|
多次元配列の受け渡し
|
|
うわー! わかった〜!!!
なまじポインタを理解したつもりになってたのでよけいややこしいく 考えちゃって迷宮めぐりになってしまった!! orz えっと。まず、配列を関数で渡す定番の方法。
この例ではわかるよね?。配列としてaを丸ごと渡している。これで 受け手である関数testkansuuは配列aを受け取れる。 あとはtestkansuu内で普通に配列として取り出せるわけ。 で、これどういうことかって言うと、 実は hairetu[] は *hairetu と同じ意味になる。 つまり、ポインタによって、配列変数aが格納されているアドレスが やり取りされているわけ。 そこで気をよくして、多次元配列を送ってみた。
エラーになっちゃうんだよねぇ・・・ いろいろとこね回したり検索してみると、こういうことすればOKだということが解った。
わかる? testkansuuでの引数の定義のところで、配列の後ろのほうの値をあらかじめ設定しておけばコンパイルできるようになる。 ・・・でもさぁ。これじゃ、呼び出すMain側からは、a[][]を自由に 設定できないよね。a[2][2]にしたい時もあるかもしれない。 そんな時、いちいち関数の定義を書き換えるってのは・・・。 面倒なだけじゃなくて、バグやミスのいい温床になっちゃうよね? そこで考え方を変えてみることにした。 そもそも多次元配列なんて存在しないのだ!! たとえば
こうしたとしよう。仮に変数aが0x100から格納され、変数bは0x200から格納されたと仮定すると・・・
このように、メモリ内部への格納にはなんの差もないのだ!! だったら、渡された先であるtestkansuu内部では単なる普通の配列 (多次元ではない)と考え、要素数を自前で計算させちゃったって 同じ値が取り出せるんじゃない?。要素の数を引数ででも渡しちゃえばいいんじゃない?? そんなわけで、呼び出し先であるtestkansuuの内部で、a[4][3]を 取り出したいとすると、これでOKとなるよね?
これで結果は同じことになり、当然コンパイラはエラーを吐かない。 わーーーい!!! ばんざーーい! ・・・あ” スマソ要素数を渡してあげる必然性ないよねこの例では・・・(^^; tesukansuu内で連続して取り出したいとかそういう場合の話ね。 |
||
(1)  |
PopnupBlog V3 Denali created by Bluemoon inc. |