ヘッダの使い方 - (2013/06/14 (金) 18:19:29) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
**構造体
ヘッダーとCPPの中にプログラムを書いていきます。
内容は前回までに作ったものを移植した(書き直した)ものにします。
ヘッダーの中身から説明します。
/*--------------student.hの中身----------------*/
#ifndef H_STUDENT
#define H_STUDENT
typedef struct tag_student
{
int num;
char name[64];
double height;
}student;
#endif
/*-------------student.cppの中身----------------*/
/*-------------main.cppの中身--------------------*/
#include <stdio.h>
#include "student.h"
int main()
{
student taro = {1,"taro",175.3};
printf("出席番号:%d番\t名前:%s\t身長:%.2fcm\n",taro.num,taro.name,taro.height);
return 0;
}
#ifndef H_STUDENT と #dfine H_STUDENT と #endif は毎回書くものです。
H_ と書いてその後ろの部分にヘッダーの名前を大文字で入れます。
#dfine H_STUDENT と #endif の間に「構造体の型宣言」を書いていきます。
構造体はヘッダーの中に書きます。
※練習問題
第1問 human.h と human.cpp を作ってください。
第2問 名前、体重、身長を持つ人間構造体を main.cpp 以外に作り、構造体変数として宣言して初期化して表示する。
**構造体
ヘッダーとCPPの中にプログラムを書いていきます。
内容は前回までに作ったものを移植した(書き直した)ものにします。
ヘッダーの中身から説明します。
/*--------------Enemy.hの中身----------------*/
#pragma once
// 敵構造体
struct tEnemy{
char name[64]; //名前
int HP; // 体力
int MP; // 魔力
};
/*-------------Enemy.cppの中身----------------*/
// cppはまだ何も書かない
/*-------------main.cppの中身--------------------*/
#include <stdio.h>
#include "Enemy.h"
int main(){
tEnemy enemy = {"slime",10, 2};
printf("名前:%s,HP:%d,MP:%d\n",enemy.name,enemy.HP,enemy.MP);
return 0;
}
ヘッダーの #pragma once はヘッダーの最初に必ず書くものです。
絶対に消さないでください。
構造体はヘッダーの中に書きます。
**練習問題
第1問 Magic.h と Magic.cpp を作ってください。
第2問 char[] 名前、int 威力、int 消費MP を持つ魔法構造体を main.cpp 以外に作り、構造体変数として宣言して初期化して表示する。
**関数
構造体は ヘッダーしか使いませんでしたが、関数はヘッダーと cpp を両方使います。
/*-------------------Enemy.hの中身----------------------*/
#pragma once
#include <stdio.h>
// 敵構造体
struct tEnemy{
char name[64]; //名前
int HP; // 体力
int MP; // 魔力
};
//【関数の宣言のみを書く】
void EnemyOutput(tEnemy enemy); // 敵の内容を表示する関数
tEnemy EnemyInput(); // 敵の内容を入力して初期化する関数
/*--------------------Enemy.cppの中身---------------------*/
#include "Enemy.h"
//【関数の内容を書く】
// 敵の内容を表示する関数
void EnemyOutput(tEnemy enemy){
printf("名前:%s,HP:%d,MP:%d\n",enemy.name,enemy.HP,enemy.MP);
}
// 敵の内容を入力して初期化する関数
tEnemy EnemyInput(){
tEnemy g;
printf("敵の名前を入力してください。\n");
scanf_s("%s",g.name, 64);
printf("敵のHPを入力してください。\n");
scanf_s("%d",&g.HP);
printf("敵のMPを入力してください。\n");
scanf_s("%d",&g.MP);
return g;
}
関数はヘッダーに 「戻り値の型」「関数の名前」「引数」だけ書き、cpp に関数の内容を書いていきます。
/*-------------------main.cppの中身----------------------*/
#include "Enemy.h"
int main(){
tEnemy enemy;
enemy = EnemyInput();
EnemyOutput(enemy);
return 0;
}
main.cpp の中身がだいぶすっきりしました。
関数や構造体を作るプログラムはなるべく、ヘッダーとcppに分けてなるべくmainはコンパクトにまとめましょう。
**列挙型
列挙型は構造体と同じようにヘッダーに書きます
/*--------------Enemy.hの中身----------------*/
#pragma once
enum e{SUN, MON, TUE, WED, THU, FRI, SAT}; //列挙型 eWeek の型宣言
**練習問題
第1問
新しくヘッダーとcppを作りその中に double型の変数を5つ受け取り、平均を求める関数を作る。
ユーザーに実数を5回入力してもらい、その平均を表示する。
第2問
社員ヘッダーを作り、識別子 JPN USA GBR GER RUS FRA を格納する列挙型の country を型宣言する。
名前、年齢、国籍コード(country型)をもつ社員構造体と社員構造体の内容を表示する関数を作り、
main.cpp で初期化して表示する。
表示オプション
横に並べて表示:
変化行の前後のみ表示: