ちょっとおまけ 自作関数の引数となっているポインタ変数に複数の構造体変数のアドレスが代入される様子を観察してみましょう

ソーラー「次のプログラムのどこがおもしろい点なのか?


それは・・・」


#include <stdio.h>

typedef struct CharacterStatusData

{

int HP;

int MP;

int AP;

int TP;

}CharacterStatusData;


void CharacterStatusData2bai(CharacterStatusData*pta){


pta->HP=2*pta->HP;

pta->MP=2*pta->MP;

pta->AP=2*pta->AP;

pta->TP=2*pta->TP;



}


int main(void)

{


CharacterStatusData charcter1StatusData={10,8,22,18};

CharacterStatusData charcter2StatusData={7,28,12,30};


printf("%d\n" ,charcter1StatusData.HP);

printf("%d\n" ,charcter1StatusData.MP);

printf("%d\n" ,charcter1StatusData.AP);

printf("%d\n" ,charcter1StatusData.TP);

printf("%d\n" ,charcter2StatusData.HP);

printf("%d\n" ,charcter2StatusData.MP);

printf("%d\n" ,charcter2StatusData.AP);

printf("%d\n" ,charcter2StatusData.TP);


CharacterStatusData2bai(&charcter1StatusData);

CharacterStatusData2bai(&charcter2StatusData);


printf("%d\n" ,charcter1StatusData.HP);

printf("%d\n" ,charcter1StatusData.MP);

printf("%d\n" ,charcter1StatusData.AP);

printf("%d\n" ,charcter1StatusData.TP);

printf("%d\n" ,charcter2StatusData.HP);

printf("%d\n" ,charcter2StatusData.MP);

printf("%d\n" ,charcter2StatusData.AP);

printf("%d\n" ,charcter2StatusData.TP);


return 0;

}


コンパイル結果


コンパイル結果


10

8

22

18

7

28

12

30

20

16

44

36

14

56

24

60


アレサ「実はいたって普通のプログラムなんですの。」


ソーラー「そうなんです(#^^#)


ただ

CharacterStatusData2bai(&charcter1StatusData);

CharacterStatusData2bai(&charcter2StatusData);


をみて あれっつと思った人もいるんじゃないかなって


思ったんだ


自作関数CharacterStatusData2baiの引数であるポインタ変数ptaに


&charcter1StatusDataにつづいて

&charcter2StatusDataが代入されているので


このプログラム


CharacterStatusData2bai(&charcter2StatusData);


だけが有効になると思った人が


いるんじゃないかなっておもったんだよ~


CharacterStatusData2bai(&charcter1StatusData);


が実行された時点で


アドレス&charcter1StatusDataに格納されている数値データは


2倍になっているんだ


そのあと


CharacterStatusData2bai(&charcter2StatusData);


により


アドレス&charcter2StatusDataに格納されている数値データは


2倍になっているんだね。


だから


アドレス&charcter1StatusDataのメモリに格納されている数値データも

アドレス&charcter2StatusDataのメモリに格納されている数値データも

ちゃんと

2倍になっているんだね。

めでたし めでたしってわけなんだね(^_^)/」





  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る