Index |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C++の基礎知識(9)【構造体篇】
| ●構造体 | ●共用体 | ●ビットフィールド |
sasaraan programming ![]() Exposition ●構造体
構造体は複数のデータ型をあわせ持つことができます。書式は以下の形式となります。タグ名と変数は用途に応じて省略が可能です。要素は省略はできませんが、異なったデータ型の要素をいくつでも設置することが可能です。宣言後は、通常の変数やポインタ、配列などと同じように扱うことができます。
●共用体
共用体は、同じメモリ領域のデータを異なるデータ型で操作するためのものです。宣言や変数、ポインタ、配列などの扱いは構造体と同じです。
●ビットフィールド
通常、メモリの操作は1バイト単位(= 8ビット)ですが、ビットフィールドでは1ビット単位(0か1)で操作することが可能です。宣言は構造体を利用して行います。この時、要素の末尾に割り当てるビット幅を指定します。
// ビットフィールドの宣言
struct datedata {
unsigned year : 7; // 0 ... 2^7-1=127 が使用可能
unsigned month : 4; // 0 ... 2^4-1=15 が使用可能
unsigned day : 5; // 0 ... 2^5-1=31 が使用可能
unsigned weekday : 3; // 0 ... 2^3-1=7 が使用可能
} ;
○メモリ配置のイメージ
// パディングつきビットフィールドの宣言
struct datedata {
unsigned year : 7; // 0 ... 2^7=127 が使用可能
unsigned : 0 // パディング
unsigned month : 4; // 0 ... 2^4=15 が使用可能
unsigned day : 5; // 0 ... 2^5=31 が使用可能
unsigned weekday : 3; // 0 ... 2^3=7 が使用可能
} ;
○メモリ配置のイメージ
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
www.sasaraan.net |
(c) morijoh |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||