C++スコーラ

構造体のポインタ

最終更新:

cschola

- 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型の関数内部で適当な値で初期化して、表示する。 

第2問
 まず、double型のcm、m、kmをメンバとして持つ length 構造体を作る。
 そして、m だけユーザーに入力してもらいながら、cmは m の100倍 kmは m の1000分の1として初期化するvoid型の関数を作る。
目安箱バナー