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]