RISTイブニングスクール (応用編:第3日C)

構造体と共用体
数理情報システム工学科
担当: 汐月哲夫
2015/10/1
プログラミング方法論
[email protected]
1
構造体(structure)
• 配列=同じ型の連続した並び
• 構造体=異なる型の並び
2015/10/1
プログラミング方法論
[email protected]
2
構造体(structure)
• 配列=同じ型の連続した並び
配列変数名+インデックス
a
0 1 2 3 4 5 6 7
• 構造体=異なる型の並び
a.s
a.t
a.u
a.v
a.w
2015/10/1
構造体変数名+メンバ名
プログラミング方法論
[email protected]
3
例題
2015/10/1
index
data
name
1
2
3
4
5
6
7
3.5
4.5
2.0
3.8
1.0
5.0
2.2
Aoki Toshiyuki
Ashikari Tomoya
Ichida Tetsuya
Inamasu Taku
Iba keiji
Irie Mitsuaki
Iwagami Tomoyuki
プログラミング方法論
[email protected]
4
例題
2015/10/1
index
data
name
1
3.5
Aoki Toshiyuki
フ
ィ
ー
ル
ド
フ
ィ
ー
ル
ド
レコード
フ
ィ
ー
ル
ド
プログラミング方法論
[email protected]
5
構造体の宣言
C言語の記述
構造体名
struct newstruct {
int index;
double data1;
char name[10];
} x, y;
構造体
newstruct
x
y
index
data1
name
メンバ名
変数名
2015/10/1
プログラミング方法論
[email protected]
6
構造体へのアクセス
C言語の記述
x
x.index 2
x.data1 3.5
x.name
x.index = 2;
y.index = 3;
3
<構造体変数名>.<メンバ名>
x.data1 = 3.5;
strcpy(y.name, “TEST”);
2015/10/1
y.index
y.data1
y.name
“TEST”
struct newstruct {
int index;
double data1;
char name[10];
} x, y;
y
プログラミング方法論
[email protected]
7
構造体へのポインタ
C言語の記述
struct newstruct {
int index;
double data1;
char name[10];
} x, y, *ptr;
ptr
x
x.index 2
x.data1 3.5
x.name
ptr = &x;
ptr-> index = 2;
ptr->data1 = 3.5;
<構造体変数へのポインタ>-><メンバ名>
2015/10/1
プログラミング方法論
[email protected]
8
共用体の宣言
C言語の記述
struct newstruct {
int index;
union {
double data1;
char name[10];
} u;
} x, y;
2015/10/1
構造体
newstruct
x
x.index
x.u.data1
index
u
y
data1
y.index
y.u.name
name
プログラミング方法論
[email protected]
9