注意:宏定义的新名字在左边 typedef在右边
宏定义不带分号 typedef带分号
宏定义什么名字都可以换,typedef只给变量类型换名字
不要无脑宏定义,它可不管“对不对”
数组只能组合相同类型的数据,结构体可以打包不同数据类型
#include<stdio.h>
int main(void)
{
struct{char x; int y; float z } c; //定义一个结构体变量叫c,其中包含char 型的x int 型的y float型的z
c . x = 'A';//引用结构体成员
c. y = 66;
c. z = 1.23;
printf("c.x=%c\n",c.x);
printf("c.y=%d\n",c.y);
printf("c.z=%f\n",c.z);
}
但是struct名字太长了,typedef起新名字。
typedef struct{
char x;
int y;
float z;
}StructName_t;
所以我们可以这样写:
#include<stdio.h>
typedef struct{
char x; 绿色的是结构体数据类型(告诉我们 结构体数据有啥玩意构成的)
int y;
float z;
}StructName_t; // 给结构体类型换个新名字,方便称呼
注意 对 ''结构体类型名'' "结构体变量名"区分??
int main(void)
{
StructName_t c; // 前面是结构体类型名 后面是结构体变量名称??
c . x = 'A';//引用结构体成员
c. y = 66;
c. z = 1.23;
printf("c.x=%c\n",c.x);
printf("c.y=%d\n",c.y);
printf("c.z=%f\n",c.z);
}
记得学习指针
C语言枚举
例1. typedef enum{
FALSE=0,
TRUE=1}Able_t
int main()
{
Able_t able;
able=FAlSE;
able=TRUE;
}
例2.
FunctionalState a;
a=ENABLE;
a=DISABLE;
不能写 a=0; 可以 强制类型转换: a=(FunctionalState)0