char c, h, moji; int i, j, seisu; double x, y, jisu;これのイメージは、図2に示しているとおりで、変数とは数値を 入れる箱のようなものである。整数型と倍精度実数型の変数は、数学の変数とよく似てい る。
int i[10], j[100][100];のように宣言を行う。そうすると必要なメモリー領域が確保され、配列が使えるようにな る。この配列のデータにアクセスするためには、配列名と添え字を指定する。次のように である。
i[3]=5; c=i[3];
最初のメンバーの規定は、つぎのように行う。
struct seito{ char name[128]; int kokugo; int sansu; };これでは、メモリーがまだ確保されていないことに注意が必要である。これは、プログラ マーが新たに変数を定義したのと同じである。
そして、この構造体を実際に使う場合には、次のようにしてメモリーを確保する。
struct seito yamamoto, ninensei[50];そうすると構造体変数が使用可能となる。
メモリーに確保された構造体のデータにアクセスするためには、ドット(.)演算子を 使うことになる。次のようにである。
yamamoto.sansu = 63; ninensei[5].kokugo=76; tensu = ninensei[6].sansu;
struct kouzoutai{ char name[8]; int seisu; double jisu; };の用に定義し、
struct kouzoutai a, b[10];のように構造体変数を用意する。
struct タグ名 { 型 メンバー1名; 型 メンバー2名; 型 メンバー3名; ・ ・ ・ 型 メンバーN名; } 変数リスト;
例として学生の名前と成績、身長、体重を示した構造体を定義してみる。
struct gakusei{ char name[80]; int mathematics; int english; int japanese; int electrical_eng; int info_eng; double height; double weight; } sato, tanaka, yamamoto;これで、gakusei型の構造体変数のsatoとtanaka、yamamotoが使え るようになる。さらに、watanabeという変数を追加したい場合は、
struct gakusei watanabe;とすればよい。
構造体変数.メンバー /* 通常 */ 構造体変数.メンバー.メンバー /* メンバーが構造体 */ 構造体変数.メンバー.メンバー.メンバー /* メンバーのメンバーも構造体*/ 構造体変数[配列の添え字].メンバー /* 構造体が配列*/ 構造体変数.メンバー[配列の添え字] /* メンバーが配列*/ 構造体変数[配列の添え字].メンバー[配列の添え字] /*構造体もメンバーも配列*/
1 #include <stdio.h> 2 #include <string.h> 3 4 struct seiseki{ 5 int mathematics; 6 int english; 7 }; 8 9 struct gakusei{ 10 char name[80]; 11 struct seiseki test; 12 double height; 13 }; 14 15 int main(void){ 16 17 struct gakusei e2[10]; 18 19 strcpy(e2[0].name,"yamamoto"); 20 e2[0].test.mathematics = 95; 21 e2[0].test.english = 65; 22 e2[0].height = 174.8; 23 24 printf("%s\n", e2[0].name); 25 printf(" Mathematics : %d\n", e2[0].test.mathematics); 26 printf(" English : %d\n", e2[0].test.english); 27 printf(" Height : %f [cm]\n", e2[0].height); 28 29 return 0; 30 }
yamamoto Mathematics : 95 English : 65 Height : 174.800000 [cm]