结构体类型和变量比较容易混淆的,下面我们就来看下如何区分。
数据类型别名:
数据类型起别名:
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 book
typedef 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是变量,前面没有typedef
int 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;
}