typedef:取别名
为现有的类型取别名
typedef int INT;
INT a,b; //int a,b;
typedef char ARR[20]
ARR a1,a2,a3; //char a1[20],a2[20],a3[20];
#define 预处理 gcc -d .i
enum类型
枚举类型
有序数据的罗列
注意:枚举类型的关键字 enum
枚举的类型名
枚举中的所有成员都是常量
如果枚举中第一个成员若不被赋值,默认为0,向后++1
enum成员间逗号隔开
若对应枚举的时候,在中间的位置赋值,后面成员在此基础上递增
enum week{Mon=1,Tues,Wed,Thurs,Fir,Sat,Sun} //默认后面234567
结构体类型
struct
结构体:相同或不同元素的成员的集合
定义:
struct [结构类型名]
{
数据类型 成员名;
数据类型 成员名2;
.................
..............................;
}
结构体初始化:
struct 结构类型名 结构变量 = {
初始化数据1,初始化数据2.,…};
使用:结构变量名,成员名称
typedef struct student
{
char *name;
int num;
int age;
}STU;
int main()
{
STU stu1 = {"xiaoming",123,23};
printf("%s\n",stu1.name);
}
结构体占用内存大小:
1.结构体的成员如果小于4字节,按照结构体中最大的字节对齐
2.如果结构体中变量类型超过了4字节,依然按照4字节对齐
结构体数组:
struct stu{
char *name;
int num;
int age;
float score;
}stu1={"tony",12,18,135,5};
int main(void)
{
struct stu *p = &stu1; //结构体指针
printf("name=%s,num=%d,age=%d,%f\n",p->name,p->num,p->age,p->score);
return 0;
}