8年前エラーメッセージをそのまま貼ってくれたらわかるかもしれません。19と言うのがsyujinkou(&kyara);の事でしょうか?ここに書かれていないsyujinkou()関数のプロトタイプ宣言はどうなっていますか?あと開発環境も書いてもらえると助かります。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。8年前softyaさんのおっしゃるとおり、プロトタイプ宣言が怪しいです。それを貼ってくれたらたぶん分かります。syujinkou(kyara1*);にして下さい。kyara1型のポインタを渡すのでこうなります。syujinkou(kyara1*);が正解です。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。置き換えればすみます。*kyara);てな具合に。ほとんど機械的な操作でできて、簡単ですよね?バグのないプログラムはない。プログラムは思ったとおりには動かない。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。)このように言われてしまいますそのエラーメッセージが出てしまうソースコード全体を見せてください。「どんなソースコードでどんなエラーメッセージが出ているか」が一発でわかるんですけどね。エラーメッセージという「結果だけを」見せられても、正確なことは何一つわかりません。バグのないプログラムはない。プログラムは思ったとおりには動かない。構造体の定義が間違っているか、byouga関数に渡す時の渡し方がおかしいんでしょうね。;ではないでしょうか。8年前たびかさなるお願いで申し訳ありませんが、当該のソースコード全体を見せていただくことはできないでしょうか。情報を小出しにされますと、正確なことがひじょうにわかりづらいのです。バグのないプログラムはない。プログラムは思ったとおりには動かない。syujinkou(&kyara[1]);}インデント(字下げ)は正確にしてくださいね。バグの原因ですし、解析を難しくします。このコードだと、forループ中にsyujinkou(&kyara[1]);が2回呼び出されますので倍動くことになりますよ。あと相変わらずロードと表示がセットなんですね。メモリがリークしているので長時間動かすとハングしますよ。それとDrawGraph(kyara.x1,kyara.y1,kyara.handoru,TRUE);とsyujinkou(&kyara[1]);は順番が逆にしたほうが良いでしょう。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。8年前9月4日22:27に投稿されたソースコードをコンパイルすると、9月2日22:31に投稿されたエラーメッセージが出る、ということでしょうか?バグのないプログラムはない。プログラムは思ったとおりには動かない。いえ、このコードだとコンパイルが通りましたですよね。見、コンパイルエラーが出そうには思えなかったので、ああいう風にお聞きしました。値の渡し方はこれで良いのか伺いたいのですコンパイルが通ったということは、少なくとも文法上の間違いはない、ということです。仕様どおりに実行するかどうかは、別の話ですけれど。バグのないプログラムはない。プログラムは思ったとおりには動かない。リークでハングとはどういう意味なのでしょうLoadGraphで画像を読み込んで破棄していませんので、同じ所を通る度に前の画像をメモリに残したまま新しい画像をロードしています。メモリにどんどん残っていきます。いう管理されずに残っていくメモリの状態ことをリークするといいます。};実体の動的初期化なので、毎回同じ座標に初期化されます。};とすれば大丈夫ですが、こういうのを関数内に書くこと自体珍しいでしょうね。普通は関数外に定義します。ちなみに構造体のメンバにstaticは出来ませんよ。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。kyara[])呼び出す時は、syujinkou(kyara);こう書くのが一番わかり易いです。*kyara)このままでもsyujinkou(kyara);で呼び出せば配列として扱うことは出来るんですけどね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。構造体配列を全てポインタで渡すにはどのような書き方をすればいいのでしょうか?構造体ではない配列の場合と全く同じです。バグのないプログラムはない。プログラムは思ったとおりには動かない。8年前syujinkou(&kyara);って書きませんでしたか?こう書いたらエラーです。[追記]最初に提示されたのはkyaraが配列ではない方法でしたよね?その場合はsyujinkou(&kyara);と渡す必要がありますが、kyaraが配列の場合はsyujinkou(&kyara);と書くと間違いです。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。byouga(kyara1[]);このプロトタイプ宣言だとコンパイルが通らないような気がするのですが...。私が9月2日の00:12に投稿した、プロトタイプ宣言の簡単な書き方が参考になりますでしょうか。コンパイル時には警告が出るだけですね。リンクエラーは、また別の話ですね。バグのないプログラムはない。プログラムは思ったとおりには動かない。参照)リンクエラーだそうですが今いじったところと関係ありますか?main.cppかにあるbyouga()関数の呼び出しが解決できませんと言うエラーです。次の2点を確認してください。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。前の書き込みだと引数が有ることになってますね。byouga(kyara1[]);main側だとありません。byouga();2種類あるんですか?C++的には可能ですが別関数として扱われます。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。8年前ちょっと交通整理しましょうか。・呼び出している部分のソースを開示してください。複数あるのならば、全部を。バグのないプログラムはない。プログラムは思ったとおりには動かない。情報が断片的すぎて、推測でしか話ができませんね。いつも推測外の話が出てきます。呼び出し時のパラメータが足りないと言われますそれは引数のある関数に引数を与えずに呼びだそうとするから出るエラーです。byouga()関数に引数が欲しいんでしょうか?欲しくないんでしょうか?最澄さんが決めるべきことなんですが・・・。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。外部変数にするとよいのではないかと思います。バグのないプログラムはない。プログラムは思ったとおりには動かない。問題点と注意点があります。(1)情報の寿命の理解が不十分です。ローカル変数を別関数に渡すのは一時的なものに過ぎませんので、渡した瞬間のみしか意味がありません。yomikomi()からbyouga()へkyara引数の呼び出しの瞬間しか意味を持ちません。mainからbyouga()を呼び出すためには、この情報(kyara)はyomikomi()からもbyouga()からもタイミング関係なしに参照可能である必要があります。(2)変数のスコープに関しての理解が不十分です。};これはローカル変数ではなく、関数外に出すことでファイルスコープ(ファイル内参照可能な変数)となります。これでyomikomi()とbyouga()の両方から参照可能になります。(3)関数は機能以外の事をしてはならない。byouga()内からsyujinkou(&kyara[1]);を呼びだしていますが、描画関数と定めた以上は移動処理など他のことしてはいけません。これは、はかの人には動作の誤解と自分自身の齟齬を生む原因となります。移動処理の関数を追加してください。(4)描画処理は最後でなくてはならない。syujinkou(&kyara[1]);を最後に呼びだしていますが描画は最後に行ってください。描画後に移動するとか、移動と描画が交互に来るとかすると画面上の表示と実際の内部の状態が食い違ってややこしいことになります。(5)外部関数のプロトタイプ宣言はヘッダに書きましょう。yomikomi();この場合は、kyara.hですね。何処のソースファイルに属するか明確になるので一般的な方法です。[DXライブラリ]」http://dixq.net/g/に詳しく書かれています。ゲームの設計と分割コンパイル(3)はじっくりと読んでくださいね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。ありがとうございます最後にしますので聞いてください私は構造体を次々と作っていったらメモリ食うのかな~と勝手に決めつけて一々、構造体を書き換えて使おうとしているので関数内に書いてみたのですが構造体は次から次へと作ってもいいのでしょうか?そのメモリ節約は8bit時代の発想です。1つの構造体配列が1KBを食うこともまず無いはずですの100個有ろうと微々たるものです。sizeof()関数で実際に消費しているサイズを確認してみてください。無駄な手間と言うより、無駄なバグ源を内包するだけです。バグを出さないプログラム基本技法は、関数や変数に複数の意味・機能を持たせないことですので。動的に画像イメージを管理することは画像だけで500MBとか消費するなら考えなくては行けないことですが、構造体配列の管理と同等に語るべきではありません。あと最後にしないほうが良いと思いますよ。今の段階で、理解できていると思えないので理解できるまで徹底的にやるべきだと思います。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。8年前softyaさんが仰っているとおり、最後にするという縛りを設けなくてよいと思います。疑問が解決するまで、こういう場を目一杯使いましょう。私がどれだけお役に立つことができるかはわかりませんけれど。関数の外で宣言した構造体変数でも書き換えて使うことはできるわけですが。問題なのは「メモリを食わないように」って発想じゃなくて「関数内で宣言するとメモリを食わない」って発想じゃないですかね。何が次から次へ作られるのか意味不明ですし。http://dixq.net/g/d_05.html確かに構造体はWinMainにありますが、キャラの座標と画像名はplayer.cpp側で設定しています。>そうすればbyouga関数からsyujinkouを呼び出す必要もありませんしその考え方は時系列的に無理なので諦めてください。画像読込をした後に引数で描画関数に渡していたことについてなのですがhandoru=yomikomi()という書き方をしてreturnで読み込ませるというやり方でいいでしょうか?これしか、ちょっと思いつかないです構造体をポインタで渡せば、構造体に値を入れて戻すことが出来ますのでそれを使います。http://dixq.net/g/d_05.htmlで解説されている内容ですね。【追記】どういうC言語の入門書を読まれたのか分かりませんが、構造体とポインタをちゃんと勉強されたほうが良いと思います。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。確かに構造体はWinMainにありますが、キャラの座標と画像名はplayer.cpp側で設定しています。します知識がしっかりしているなら良いのですが、怪しい所が沢山ありますので入門書は買われたほうが良いと思いますが、復習と知識不足の部分を補うのに、苦Cなどのサイトを使う手もあります。「苦しんで覚えるC言語」http://9cguide.appspot.com/初歩の部分はここで済まして、実践的な書籍を買うって手段ですね。このあたりは今の状況を見るとチェックしておいた方が良いでしょう。確かに構造体はWinMainにありますが、キャラの座標と画像名はplayer.cpp側で設定しています。Player2;」と書かれている部分はwinmainの場所ですよねですからmain関数の中に構造体の実体を宣言するということでいいんでしょうか?ケースバイケースですので、それもひとつの方法ですねとしか言えません。Playerなど固定数で引数での受け渡し要素が少ない構造体なら悪い方法ではないですが、引数がやたら増えてくるのなら避けたほうが良い選択肢です。それにすべての構造体をWinMainで定義できるかというと疑問です。ファイルから読み込むような可変個数の敵の発生情報の構造体をWinMainで持つのが良いかと聞かれたら避けるべきと答えますね。WinMainにある意味が無いし、個数が可変するので受け渡す情報が増えて逆に不便になります。必要なものを必要な所に最小限が関数分けのポイントです。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。ミクプラは自由にリンクできます。