Head First C学習の構造体、連合、列挙、フィールド(strcut、union、enum、bitfield)
Head First C 220ページにあります.
struct fish {
const char *name;
const char *species;
int teeth;//
int age;
};
struct fish snappy = {"Snappy","Piranha",69,4};
printf("Name = %s
",snappy.name);
しかアクセスできません.
では、コンピュータがメモリに何も作成できないようにするのではなく、コンピュータのテンプレートを切っただけです.
の場合、メモリ内に構造体のために十分な空間が作成される.(Head First C
第226ページにある
)typedef
を使用して構造体の名前を付けることができます(結合、列挙にも適用されます):Head First C 232ページにあります.
typedef struct fish {
const char *name;
const char *species;
int teeth;//
int age;
}yue;
* `typedef` , , , (`struct fish`), (`yue`)。
:
yue snappy = {"Snappy","Piranha",69,4};
>* `typedef`
######
Head First C 240 :
>```
>(*t).age !=*t.age
>(*t).age == t->age
>```
***
##### union:
Head First C 247 :
typedef union {
shot cunt;
float weight;
float volume;
} quantity;
, ,`quantity` 。
:
>######C89 :
quantity q = {4};
// , 。
>###### :
quantuty q =(.weight=1.5);
`『 』` 。
>######`"."` :
quantity q;
q.volume = 3.7;
***
== , , ` ` ==
##### enum
Head First C 255
enum colors {RED,GREEN,PUCE};
enum colors favorite = PUCE;
, .
== `;` , `,`==
***
##### 、 、 :
Head First C 258
include
typedef enum {
COUNT,POUNDS,PINTS// 、 、
} unit_of_measure;
typedef union {
short count;
float weight;
float volume;
} quantity;
typedef struct {
const char *name;
const char *country;
quantity amounat;
unit_of_measure units;
} fruit_order;
void display(fruit_order order)
{
printf("This order countais ");
if (order.units== PINTS)
printf("%2.2f pints of %s
",order.amounat.volume,order.name);
else if (order.units == POUNDS)
printf("%2.2f lbs of %s
",order.amounat.weight,order.name);
else
printf("%i %s
",order.amounat.count,order.name);
}
int main()
{
fruit_order apple = {"apples","England",.amounat.count = 144,COUNT};
fruit_order strawberries = {"strawberries","Spain",.amounat.weight = 17.6,POUNDS};
fruit_order oj = {"orange juice","U.S.A",.amounat.volume = 10.5, PINTS};
display(apple);
display(strawberries);
display(oj);
return 0;
}
***
##### (bitfield)
Head First C 262 :
typedef struct {
unsigned int low_pass_vcf:1;
unsigned int filter_coupler:1;
unsigned int reverb:1;
unsigned int sequential:1;
} synth;