一.结构体
作用:组合不同类型的数据。
声明语法:
struct 结构体名称 //结构体名称通常第一个名称为大写。
{
结构体成员1;
结构体成员2;
结构体成员3;
结构体成员4;
};
定义语法:
struct 结构体名称 结构体变量名;
也可以在声明时定义,看下后例子
访问结构体变量:点号运算符(.)
例:
//书籍录入系统
#include <stdio.h>
struct Book //声明有这样一个结构体
{
char title[128];
char author[40];
float price;
unsigned int date;
char publisher[40];
} book1;//定义个全局变量的结构体book1
int main(void)
{
struct Book book;//定义局部变量结构体book
printf("请输入书名:");
scanf("%s", book.title);//访问结构体变量
getchar();
printf("请输入作者:");
scanf("%s", book.author);
getchar();
printf("请输入售价:");
scanf("%f", &book.price); //字符串不用取地址,而数需要&
getchar();
printf("请输入出版日期:");
scanf("%d", &book.date);
getchar();
printf("请输入出版社:");
scanf("%s", book.publisher);
getchar();
printf("=========数据录入完毕==========\n");
printf("书名:%s\n", book.title);
printf("作者:%s\n", book.author);
printf("售价:%.2f\n", book.price);
printf("出版日期:%u\n", book.date);
printf("出版社:%s\n", book.publisher);
getchar(); //putchar()输出单个字符、getchar()过滤回车符
return 0;
}
初始化结构体变量:(注意结构体的成员类型要一致)
struct Book book =
{
"《C Primer Plus》",
"Stephen P rata",
60.00,
20052,
"人民邮电出版社"
};
初始化结构体指定成员值:(也可以在定义时初始化。)
struct Book book ={.price = 60.00}
注:这样写可以不按结构体声明的成员顺序初始化。
####编译器会对结构体成员进行内存对齐####对齐后做的微调节省空间
例:
#include <stdio.h>
struct A
{
char a;
int b;
char c;
} a = {'x', 520, 'o'};//定义并初始化
int main(void)
{
printf("size of a = %d\n", sizeof(a));
getchar();
return 0;
}
结果:
size of a = 12
微调:
#include <stdio.h>
struct A
{
char a;
char c;
int b;
} a = {'x', 'o', 520};//定义并初始化
int main(void)
{
printf("size of a = %d\n", sizeof(a));
getchar();
return 0;
}
结果:
size of a = 8
图解:

结构体嵌套:
例:
//书籍系统
#include <stdio.h>
struct Date
{
int year;
int month;
int day;
}date;
struct Book //声明有这样一个结构体
{
char title[128];
char author[40];
float price;
struct Date date;//结构体嵌套
char publisher[40];
} book = {
"《C Primer Plus》",
"Stephen
本文详细介绍了C语言中的结构体、typedef、联合体(共用体)以及枚举类型。结构体用于组合不同类型的数据,可以通过点号运算符访问成员;typedef提供类型别名,简化复杂类型;联合体的所有成员共享同一内存地址,赋值会覆盖以前的值;枚举类型用于定义一组枚举常量,方便代码阅读和理解。文章还通过实例解析了它们的使用方法和注意事项。
最低0.47元/天 解锁文章
485

被折叠的 条评论
为什么被折叠?



