C:メモ:列挙構造連合
2005 ワード
列挙
プログラムに一定の数字が必要な場合、これらの数字はmagic numberと呼ばれ、これらの数字は常に文字で置き換えられます.
たとえば、色を定義します.
const int red = 0;
const int yellow = 0;
const int green = 0;
より良い方法は、上記の独立したconst int変数の代わりに、列挙タイプを使用して定義することです.
Enum COLORは、タイプ宣言のプレフィックスとして使用されます.
列挙はintのみで、列挙量のデフォルトは0からです.列挙タイプの各量の値サイズを指定することもできます.
(C言語の列挙タイプはあまり使われません.使いにくいからです)
こうぞう
structキーワード{}の後ろにセミコロンが必要です.
配列変数名は変数アドレスですが、構造はそうではありません.&を使用してアドレス値を取得する必要があります.
構造変数が関数内でパラメータとして渡されると、変数ではなく値が渡されます.つまり、関数内に新しい構造変数が作成されます.
->シンボル->ポインタが指す構造変数のメンバー
配列タイプは、カスタム構造タイプでも使用できます.
struct date today[2] = {{12,05,2015},{10,01,2016}};//date構造タイプの配列を定義します.
today[0].day = 5;//配列内の構造のメンバー変数をインデックス番号とポイントで参照します.
コンビネーション
typedef
typedef:カスタムデータ型
typedef int Length;//lengthはintの別名になります.
typedef struct ADate{
int month;
int day;
int year;
} Date;
//DateはtypedefとDateの間のものを表しています.
Date a = {12, 5, 2015};//typedefを使用すると、この文は次の文に相当します.すなわち,以降,新しい構造変数を宣言するたびにstructを持つ必要はない.
struct ADate a = {12, 5, 2015};
union
union Test{
int i;
char c;
} test1, test2;
sizeof(union Test);//結果はsizeof(各メンバー)の最大値です.
//unionの場合、すべてのメンバー変数は同じメモリ領域を使用します.
//同じ時間に有効なメンバーは1人だけです.
プログラムに一定の数字が必要な場合、これらの数字はmagic numberと呼ばれ、これらの数字は常に文字で置き換えられます.
たとえば、色を定義します.
const int red = 0;
const int yellow = 0;
const int green = 0;
より良い方法は、上記の独立したconst int変数の代わりに、列挙タイプを使用して定義することです.
enum COLOR{RED, YELLOW, GREEN};//RED=0,YELLOW=1,GREEN=2
Enum COLORは、タイプ宣言のプレフィックスとして使用されます.
enum COLOR t;//t , enum COLOR, C ,enum 。
列挙はintのみで、列挙量のデフォルトは0からです.列挙タイプの各量の値サイズを指定することもできます.
(C言語の列挙タイプはあまり使われません.使いにくいからです)
こうぞう
structキーワード{}の後ろにセミコロンが必要です.
// :
// :
struct date{
int month;
int day;
int year;
};
// :
struct {
int month;
int day;
int year;
}today;// , , today 。
// , , 。
struct date today;// today date 。
today = (struct date){12,05,2015};// today
today = {.month = 12, .year = 2015};// 。
today.month = 12;// 。
today1 = today2;// , 。
配列変数名は変数アドレスですが、構造はそうではありません.&を使用してアドレス値を取得する必要があります.
構造変数が関数内でパラメータとして渡されると、変数ではなく値が渡されます.つまり、関数内に新しい構造変数が作成されます.
->シンボル->ポインタが指す構造変数のメンバー
struct date *p = &today;
(*p).month = 12;
p->month = 12;// 。
//-> 。
配列タイプは、カスタム構造タイプでも使用できます.
struct date today[2] = {{12,05,2015},{10,01,2016}};//date構造タイプの配列を定義します.
today[0].day = 5;//配列内の構造のメンバー変数をインデックス番号とポイントで参照します.
コンビネーション
typedef
typedef:カスタムデータ型
typedef int Length;//lengthはintの別名になります.
typedef struct ADate{
int month;
int day;
int year;
} Date;
//DateはtypedefとDateの間のものを表しています.
Date a = {12, 5, 2015};//typedefを使用すると、この文は次の文に相当します.すなわち,以降,新しい構造変数を宣言するたびにstructを持つ必要はない.
struct ADate a = {12, 5, 2015};
union
union Test{
int i;
char c;
} test1, test2;
sizeof(union Test);//結果はsizeof(各メンバー)の最大値です.
//unionの場合、すべてのメンバー変数は同じメモリ領域を使用します.
//同じ時間に有効なメンバーは1人だけです.