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型の関数を作る。