■ポインタを使わない構造体メンバの参照
#include <stdio.h>
typedef struct {
int R赤;
int G緑;
int B青;
} 構造体枠_t;
//構造体変数の宣言と初期化
構造体枠_t 構造体変数三原色 ={
.R赤 = 0x10,
.G緑 = 0x20,
.B青 = 0x30
};
int main(void){
printf("R = %02x\n",構造体変数三原色.R赤);
printf("G = %02x\n",構造体変数三原色.G緑);
printf("B = %02x\n",構造体変数三原色.B青);
}
■構造体ポインタとアロー演算子ー>(推奨)
#include <stdio.h>
typedef struct {
int R赤;
int G緑;
int B青;
} 構造体枠_t;
//構造体変数の宣言と初期化
構造体枠_t 構造体変数三原色 ={
.R赤 = 0x10,
.G緑 = 0x20,
.B青 = 0x30
};
int main(void){
構造体枠_t *ptr = &構造体変数三原色;
printf("R = %02x\n",ptr->B青);
printf("G = %02x\n",ptr->G緑);
printf("B = %02x\n",ptr->B青);
}
「構造体ポインタptrの指す先のメンバB青」と
自然に読めるので
通常このスタイルが使われます。
■構造体ポインタと間接演算子 *(非推奨)
#include <stdio.h>
typedef struct {
int R赤;
int G緑;
int B青;
} 構造体枠_t;
//構造体変数の宣言と初期化
構造体枠_t 構造体変数三原色 ={
.R赤 = 0x10,
.G緑 = 0x20,
.B青 = 0x30
};
int main(void){
構造体枠_t *ptr = &構造体変数三原色;
printf("R = %02x\n",(*ptr).R赤);
printf("G = %02x\n",(*ptr).G緑);
printf("B = %02x\n",(*ptr).B青);
}
読みにくいのでこのスタイルは通常使用されません。