C++スコーラ
構造体のポインタ
最終更新:
Bot(ページ名リンク)
-
view
構造体のポインター
構造体のポインターを引数として関数に渡すと、構造体の中身を関数の中で変えることができます。
#include <stdio.h>
// 立方体の構造体
struct tBox {
double height; // 縦
double width; // 横
double lengh; // 奥行き
};
// 立方体の初期化用関数
void InitCube(tBox* cube, double side) {
cube->height = side;
cube->lengh = side;
cube->width = side;
}
// 立方体の内容表示
void OutputBox(tBox cube) {
printf("縦%.2fcm\t横%.2fcm\t奥行き%.2fcmの立方体です。\n", cube.height, cube.lengh, cube.width);
}
int main() {
tBox cube1, cube2;
InitCube(&cube1, 10.2);
InitCube(&cube2, 50.9);
OutputBox(cube1);
OutputBox(cube2);
return 0;
}
関数の中で、構造体のポインターを使いメンバ変数の本体にアクセスする場合は . (ドット)ではなく、
-> (アロー)を使います。 アローは - (ハイフン) と > (小なり)を組み合わせたものです。
-> (アロー)を使います。 アローは - (ハイフン) と > (小なり)を組み合わせたものです。
練習問題
次のようなプログラムを作ってください。
第1問
名前、HP、MPをメンバ変数として持つ敵構造体を作って、
void型の関数内部で適当な値で初期化して、表示する。
第1問
名前、HP、MPをメンバ変数として持つ敵構造体を作って、
void型の関数内部で適当な値で初期化して、表示する。
第2問
まず、double型のcm、m、kmをメンバとして持つ length 構造体を作る。
そして、m だけユーザーに入力してもらいながら、cmは m の100倍 kmは m の1000分の1として初期化するvoid型の関数を作る。
まず、double型のcm、m、kmをメンバとして持つ length 構造体を作る。
そして、m だけユーザーに入力してもらいながら、cmは m の100倍 kmは m の1000分の1として初期化するvoid型の関数を作る。