構造体 引数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
馬鹿ですが何か

構造体 引数

#1

投稿記事 by 馬鹿ですが何か » 14年前

http://dixq.net/forum/viewtopic.php?f=3&t=8421
ここの掲示板のトピックを見ていて疑問に思ったことがあったので質問しようとしたのですが
投稿者様が解決ボタンを押してしまったのでトピックをたてさせてもらいます

コード:

//プレイヤー情報
struct player_t {
    int x, y;
    int hp;
} aaaaaa;
 
//セーブ情報
struct savedata_t {
    struct player_t bbbbbb;
} savedata[3];
 
// セーブ処理関数
void write_savedata(int index) {
    savedata[index].bbbbbb = aaaaaa; // 指定されたスロットのsavedataのメンバにコピー
    // 書き出し
}
このように書いてあったのですが
なぜセーブ情報構造体を三つも作っているのでしょうか?
セーブしたい情報はプレイヤー情報1つだけですよね?なんで3つもつくっているのですか?

それと引数についての質問なのですが、引数ってのは関数を呼び出すときに渡す数値で
kannsuu(100,200)このように使うものですよね?
なぜindexが引数なんですか?引数を各部分はローカル変数の宣言場所にも使えるってコトですか?

すごい初心者じみた質問ですがお答えお願いしますお願いします

馬鹿ですが

Re: 構造体 引数

#2

投稿記事 by 馬鹿ですが » 14年前

あと2つほど質問をさせてください
主人公構造体の中のint xだけをセーブするときはどうすればいいでしょうか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 構造体 引数

#3

投稿記事 by h2so5 » 14年前

馬鹿ですが何か さんが書きました: このように書いてあったのですが
なぜセーブ情報構造体を三つも作っているのでしょうか?
セーブしたい情報はプレイヤー情報1つだけですよね?なんで3つもつくっているのですか?
これはあくまで例なのでそれほど深い意味はないと思いますが、
ゲームによってはセーブデータを複数作れるものがありますよね?
そういうものを想定していると思われます。

つまり、セーブデータを3つまで作れるように
配列をつかって3つ作っているということです。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 構造体 引数

#4

投稿記事 by ISLe » 14年前

馬鹿ですが何か さんが書きました:セーブしたい情報はプレイヤー情報1つだけですよね?なんで3つもつくっているのですか?
元ネタを投稿した本人ですが、構造体のメンバに構造体を持つことができ、構造体変数同士の代入ができることを示す例のつもりで書きました。
プレイヤー構造体とセーブデータ構造体がただ一対一で対応しているだけだと、質問者さんが書いていた同じメンバ構造の異なる構造体型を無理矢理コピーするのと比べてインパクトが弱いように思えたのでゲームっぽくセーブデータを増やしてみようと欲を掻いてしまいました。
馬鹿ですが何か さんが書きました:なぜindexが引数なんですか?引数を各部分はローカル変数の宣言場所にも使えるってコトですか?
あれは関数の定義部分なので使うときは
write_savedata(1); /* 添字1(2番目)のセーブデータに現状記録して書き出す */
というふうに呼び出すことを想定してます。
馬鹿ですが何か さんが書きました:主人公構造体の中のint xだけをセーブするときはどうすればいいでしょうか?
質問にあるコード例ですと、aaaaaa.xを使えば良いと思います。

馬鹿ですがry

Re: 構造体 引数

#5

投稿記事 by 馬鹿ですがry » 14年前

こんな初心者質問に答えてくれてありがとうございました
理解できました~

閉鎖

“C言語何でも質問掲示板” へ戻る