C言語>ポインタ2
2回目は、関数を使ってポインタを説明します。
例文
//================================================
//include
//================================================
#include <stdio.h>
//================================================
//struct
//================================================
struct tagChara
{
int attack;//攻撃力
int defence;//防御力
};
//================================================
//関数のプロトタイプ宣言
//================================================
void SetStatus(int *attack, int *defence);//ステータスセット
//================================================
//メイン関数
//================================================
int main(void)
{
struct tagChara player;
/*ステータスセット*/
SetStatus(&player.attack, &player.defence);
[[printf]]("攻撃力:%d\t", player.attack);
printf("防御力:%d", player.defence);
return 0;
}
//================================================
//ステータスセット
//================================================
void SetStatus(int *attack, int *defence)
{
printf("攻撃力を入力せよ");
[[scanf]]("%d", attack);
printf("防御力を入力せよ");
scanf("%d", defence);
}
実行結果
解説
void SetStatus(int *attack, int *defence);
引数がポインタの関数のプロトタイプ宣言をしています。
こうしないと、正確な値が出ません(確認済)
こうしないと、正確な値が出ません(確認済)
SetStatus(&player.attack, &player.defence);
関数の使用です。
ポインタを参照するため、&をつけてください。
ポインタを参照するため、&をつけてください。
scanf("%d", attack);
このscanfですが、少し違うところがあります。
それは&がついていないところです。
これは、前回のポインタの説明に関係してきます。
前回
それは&がついていないところです。
これは、前回のポインタの説明に関係してきます。
前回
| ポインタ | 数値:*を前につける |
| アドレス:何も付けない |
と書いたと思います。
その関係で、アドレスを参照するときには何もいらないのです。
その関係で、アドレスを参照するときには何もいらないのです。
<C言語に戻る