C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

C++ 無名構造体 書いて覚えるための初心者自己中記事

名前のない

クラス

構造体

列挙体

共用体

を作ることが出来る。

struct Student {
	char name[MAX_NAME + 1];
	int scoreJapanese;
	int scoreMath;
	int scoreEnglish;
}student;

構造体の宣言と構造体変数の宣言。

下に書くと変数の宣言が出来るのか。

 

無名にする。

struct {
	char name[MAX_NAME + 1];
	int scoreJapanese;
	int scoreMath;
	int scoreEnglish;
}student;

変数student は出来ている。

名前が無いので引数にはできない。void* を除いて。

 

使い道が4つあるらしい。

メンバ関数を持てる(?? あ、クラスの場合?)

②クラスや構造体を継承出来る。アップキャストできる。

③typedefを使って

typedef struct {
	char name[MAX_NAME + 1];
	int scoreJapanese;
	int scoreMath;
	int scoreEnglish;
}Student;

こうするとStudent という型名が用意される。(??)

 

④共用体の中で宣言する。

union Word {
	unsigned short word;//2バイトのメンバ変数
 
	struct {
		unsigned char low;//下位バイト
		unsigned char high;//上位バイト
	}byte;//1バイトのメンバ変数2つ
};
 
int main() {
	Word n = { 0x1234 };
	printf("上位バイト: %02X\n", n.byte.high);
	printf("下位バイト: %02X\n", n.byte.low);
	system("pause");
}
//output
上位バイト: 12
下位バイト: 34

すごい。共用体の中の無名構造体はひと塊として共用されるのか。

無名構造体の中ではメモリ領域の区分けがされている。

 

無名構造体は、名前つける必要なくね?な場合に無名にすると、

スッキリする。

 

ここまで。