一、结构体定义
1、结构体是对数据类型的拓展,在一个结构体可以存放多样类型的数据。
2、结构体定义格式
struct 结构体名{
类型 成员变量1;
类型 成员变量2;
.......
};
typedef enum card_type{ 身份证, 学生证,毕业证} CARD_TYPE;
struct stu_info {
unsigned int id;
CARD_TYPE CardType;
char CardNum[20];
char name[32];
char sex;
};
3、直接赋初始值
struct stu_info s1 = { 1, 身份证, "20240100001", "张三", ‘M’};
二、.操作符
struct stu_info s2;
s2.id = 2;
strcpy(s2.CardNum, "20240100002");
s2.name = "李四";
s2.sex = 'M';
三、 结构体数组
#define BOOK_CNT 3
//定义结构数组
typedef struct book{
int year;
double prince;
char name[64];
char author[32];
}BOOK, *P_BOOK;
//初始化结构体数组
BOOK mybooks[BOOK_CNT]={
{1923, 230.4, "good", "zs"},
{2034, 19.3, "well", "ls"},
{2023, 39.24, "great", "ww"},
};
//访问结构体数组
for(i=0; i<BOOK_CNT; i++){
printf("%-6d, %6.2f, %-20s, %-20s\r\n",mybooks[i].year, mybooks[i].prince, mybooks[i].name, mybooks[i].author);
}
四、结构体指针
//结构体指针
struct book* p1 = &mybooks[0];
BOOK* p2 = mybooks;
P_BOOK p3 = &mybooks[2];
printf("%s\r\n", (*p1).name);
printf("%s\r\n", p3->name);
printf("%d\r\n", p2->year);