TNP資料室 @ ウィキ

構造体の使い方について

最終更新:

kokeiro

- view
だれでも歓迎! 編集

構造体について

 この項目で学ぶこと

構造体とは

構造体とは複数の変数をまとめたものです。たとえば人のデータとして氏名、身長、体重が必要だったとします。構造体を用いるとこれらの変数をまとめることが出来ます。

構造体の使い方

構造体は標準で定義されている構造体のほかに、自分で定義することが出来ます。ここでは自分で定義し、使用する方法の一例を紹介します。C++からサポートされた記述の仕方になりますが、最近のコンパイラはほとんどC++に対応しているのでエラーは出ないと思います。
 構造体の定義は関数の外に以下のように記述します。
struct 構造体タグ名{
	データ型 変数名;
	データ型 変数名;
	...
};
構造体内に定義された変数はメンバ変数といいます。メンバ変数の型はばらばらのものでかまいません。今回の例では氏名はchar型、身長、体重はdouble型で用意します。用意された構造体は次のようにして宣言します。
構造体タグ名 構造体名
 このように普通の変数のように宣言することが出来ますメンバ変数にアクセスするときは.(ドット)演算子を使用します。使い方はサンプルソースを見てください。

コケいろさんのデータ。もちろん数字は適当。

#include<stdio.h>
#include<string.h>
struct SPerson{	// StructPersonの略。筆者の略し方。
	char Name[32];
	double Height,Weight;
};
int main(){
	SPerson Kokeiro;
	strcpy(Kokeiro.Name,"コケいろ\0");
	Kokeiro.Height = 180.;
	Kokeiro.Weight = 70.;
	printf("氏名 \t\t 身長 \t 体重 \n");
	printf("%s \t %.1f \t %.1f \n",Kokeiro.Name,Kokeiro.Height,Kokeiro.Weight);
	return 0;
}
.演算子を使ってアクセスする以外は普通の変数と同じです

ポインタを使った構造体のアクセスの仕方

構造体のポインタのメンバにアクセスするときは->(アロー)演算子を使います。先ほどのソースの代入部分をポインタ構造体にしてみました。
#include<stdio.h>
#include<string.h>
struct SPerson{	// StructPersonの略。筆者の略し方。
	char Name[32];
	double Height,Weight;
};
int main(){
	SPerson Kokeiro;
	SPerson *PKokeiro = &Kokeiro;	// pはポインタの頭文字
	strcpy(PKokeiro->Name,"コケいろ\0");
	PKokeiro->Height = 180.;
	PKokeiro->Weight = 70.;
	printf("氏名 \t\t 身長 \t 体重 \n");
	printf("%s \t %.1f \t %.1f \n",Kokeiro.Name,Kokeiro.Height,Kokeiro.Weight);
	return 0;
}

Cの構造体の宣言について

 二つ前のソースを書き換えてみました。構造体の宣言の仕方のみ違います
#include<stdio.h>
#include<string.h>
struct SPerson{
	char Name[32];
	double Height,Weight;
};
int main(){
	struct SPerson Kokeiro;			// 構造体タグ名の前にstructが必要
	strcpy(Kokeiro.Name,"コケいろ\0");	// 後の使い方は一緒。
	Kokeiro.Height = 180.;
	Kokeiro.Weight = 70.;
	printf("氏名 \t\t 身長 \t 体重 \n");
	printf("%s \t %.1f \t %.1f \n",Kokeiro.Name,Kokeiro.Height,Kokeiro.Weight);
	return 0;
}
 C言語にはstructを書かなくてすむようにする方法もありますがC++の方法を知っていれば十分なので紹介しません。気になるようであれば「typedef」とかで調べてください。

サンプルソース

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー