「構造体の使い方について」の編集履歴(バックアップ)一覧はこちら

構造体の使い方について」(2010/03/02 (火) 22:39:13) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*構造体について  この項目で学ぶこと ・&link_anchor(1){構造体とは} ・&link_anchor(2){構造体のアクセスの仕方} ・&link_anchor(3){ポインタを使った構造体のアクセスの仕方} ・&link_anchor(4){Cの構造体の宣言について} ・&link_anchor(5){サンプルソース} **&aname(1,option=nolink){構造体とは}  構造体とは、複数の変数をまとめたものです。たとえば人のデータとして氏名、身長、体重が必要だったとします。構造体を用いるとこれらの変数をまとめることが出来ます。とりあえず使い方のサンプルソース見てください。 **&aname(2,option=nolink){構造体の使い方}  構造体は標準で定義されている構造体のほかに、自分で定義することが出来ます。ここでは自分で定義し、使用する方法の一例を紹介します。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; }  .演算子を使ってアクセスする以外は普通の変数と同じです。 **&aname(3,option=nolink){ポインタを使った構造体のアクセスの仕方}  構造体をポインタで扱うときは->(アロー)演算子を使ってアクセスします。先ほどのソースの代入部分をポインタ構造体にしてみました。 #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; } **&aname(4,option=nolink){Cの構造体の宣言について}  二つ前のソースを書き換えてみました。構造体の宣言の仕方のみ違います。 #include<stdio.h> #include<string.h> struct SPerson{ // StructPersonの略。筆者の略し方。 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」とかで調べてください。 **&aname(5,option=nolink){サンプルソース}
*構造体について  この項目で学ぶこと ・&link_anchor(1){構造体とは} ・&link_anchor(2){構造体のアクセスの仕方} ・&link_anchor(3){ポインタを使った構造体のアクセスの仕方} ・&link_anchor(4){Cの構造体の宣言について} ・&link_anchor(5){サンプルソース} *&aname(1,option=nolink){構造体とは}  ''構造体とは複数の変数をまとめたものです''。たとえば人のデータとして氏名、身長、体重が必要だったとします。構造体を用いるとこれらの変数をまとめることが出来ます。 *&aname(2,option=nolink){構造体の使い方}  ''構造体は標準で定義されている構造体のほかに、自分で定義することが出来ます''。ここでは自分で定義し、使用する方法の一例を紹介します。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; }  ''.演算子を使ってアクセスする以外は普通の変数と同じです''。 *&aname(3,option=nolink){ポインタを使った構造体のアクセスの仕方}  ''構造体のポインタのメンバにアクセスするときは->(アロー)演算子を使います''。先ほどのソースの代入部分をポインタ構造体にしてみました。 #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; } *&aname(4,option=nolink){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」とかで調べてください。 *&aname(5,option=nolink){サンプルソース}

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー