typedef区分结构体类型和结构体变量
结构体类型和变量比较容易混淆的,下面我们就来看下如何区分。
数据类型别名:
数据类型起别名:
u8 --- unsigned char
u16 --- unsigned short
u32 --- unsigned int typedef 关键字,给类型起别名; 数据类型的前面有typedef 那么后面的名称就是别名。格式:typedef 数据类型 别名;typedef unsigned char u8;
给结构体类型起别名:前面有typedef的是类型别名
第1种:先定义再起别名
struct book
{unsigned int bookNumber;char bookName[30];char writer[20];float price;int hot;int kc;
};// 结构体类型名:struct booktypedef struct book BK; // 别名建议用大写使用:BK b5;struct book b6;
第2种:在定义的时候直接起别名
typedef struct book
{unsigned int bookNumber;char bookName[30];char writer[20];float price;int hot;int kc;
}BK;使用:BK b5;struct book b6;
第3种:不建议,省略结构体名称
typedef struct
{unsigned int bookNumber;char bookName[30];char writer[20];float price;int hot;int kc;
}BK;使用:只能用别名BK b5;
结构体变量定义:前面没有typedef 是空间名称。
第1种:先定义类型在定义变量
定义结构体类型
结构体类型 变量名;
struct book
{unsigned int bookNumber;char bookName[30];char writer[20];float price;int hot;int kc;
}; int main()
{struct book b1;b1.bookNumber = 1;strcpy(b1.bookName,"C语言");strcpy(b1.writer,"谭浩强");b1.price = 34.5;b1.hot = 3;b1.kc = 30;// 访问:printf("%d %s %s %.2f %d %d\n",b1.bookNumber,b1.bookName,b1.writer,b1.price,b1.hot,b1.kc);return 0;
}
第2种:在定义类型的时候直接定义变量
struct book
{unsigned int bookNumber;char bookName[30];char writer[20];float price;int hot;int kc;上
}b1;// 使用:b1是变量,前面没有typedefint main()
{b1.bookNumber = 1;strcpy(b1.bookName,"C语言");strcpy(b1.writer,"谭浩强");b1.price = 34.5;b1.hot = 3;b1.kc = 30;// 访问:printf("%d %s %s %.2f %d %d\n",b1.bookNumber,b1.bookName,b1.writer,b1.price,b1.hot,b1.kc);return 0;
}