【C语言】结构体、枚举、联合体
### 文章目录
- [@[TOC](文章目录)](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [前言](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [一、结构体声明](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [1.一般格式](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [2.typedef 重命名结构体类型定义变量](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [二、结构体数组](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [三、结构体与指针及函数传参](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [四、结构体传参](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [五.结构体在内存的存储](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [六、参考文献](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
- [总结](#文章目录 @TOC 前言 一、结构体声明 1.一般格式 2.typedef 重命名结构体类型定义变量 二、结构体数组 三、结构体与指针及函数传参 四、结构体传参 五.结构体在内存的存储 六、参考文献 总结)
前言
使用工具:
1.编译器:VScode
提示:以下是本篇文章正文内容,下面案例可供参考
一、结构体声明
1.一般格式
结构体标签+结构体变量名=结构体类型=
struct +stu
结构体标签+结构体变量名+定义变量=
struct +stu +s
c
struct stu s
c
struct stu
{
char name[20];
char gender[10];
int age;
float score;
};
int main()
{
struct stu s={"王二麻子", "男", 22, 98.8};
printf("%s %s %d %0.2lf\n",s.name,
s.gender,
s.age,
s.score);
return 0;
}
c
王二麻子 男 22 98.80
2.typedef 重命名结构体类型定义变量
typedef +结构体标签+结构体变量名=结构体类型=新结构体变量名
typedef+struct +stu=stu1
c
typedef struct stu
{
}stu1;
将struct stu重定义为stu1,此时,stu1可代替struct stu创建变量
新结构体类型+定义变量
stu1+s
c
stu1 s
c
typedef struct stu
{
char name[20];
char gender[10];
int age;
float score;
}stu1;
int main()
{
stu1 s={"王二麻子", "男", 22, 98.8};
printf("%s %s %d %0.2lf\n",s.name,
s.gender,
s.age,
s.score);
return 0;
}
c
王二麻子 男 22 98.80
二、结构体数组
typedef +结构体标签+结构体变量名=结构体类型=新结构体变量名
typedef+struct+stu=stu1
结构体类型+数组元素类型=结构体数组类型
stu1+stu[3]
c
typedef struct stu
{
char name[20];
char gender[10];
int age;
float score;
}stu1;
int main()
{
int i;
stu1 stu[3]={{"李四", "男", 22, 98.8},{"张三","男",21,95.5},{ "翠花", "女", 20, 99} };
int sz=sizeof(stu)/sizeof(stu[0]);
printf("%s %s %s %s\n","姓名","性别","年龄","得分");
for(i=0; i<sz; i++)
{
printf("%s %s %d %0.2lf\n",stu[i].name,
stu[i].gender,
stu[i].age,
stu[i].score);
}
return 0;
}
c
姓名 性别 年龄 得分
李四 男 22 98.80
张三 男 21 95.50
翠花 女 20 99.00
三、结构体与指针及函数传参
指针访问成员变量 一般使用 -> 操作符
即通过地址访问成员变量使用->
通过值访问成员变量使用.
c
typedef struct stu
{
char name[20];
char gender[10];
int age;
float score;
}stu1;
int main()
{
stu1 s={"王二麻子", "男", 22, 98.8};
stu1 *p=&s;
printf("%s %s %d %0.2lf\n", p->name,
(&s)->gender,
(*p).age,
s.score);
return 0;
}
c
王二麻子 男 22 98.80
四、结构体传参
值传递:形参是实参的一份临时拷贝,函数执行完成时,分配给形参的内存自动销毁。
址传递:传的是变量的地址,通过地址可以访问,并且可以修改变量的值。
建议结构体传参,不管是用来访问结构体成员,还是修改结构体成员都建议传地址过去
c
typedef struct stu
{
char name[20];
char gender[10];
int age;
float score;
}stu1;
void print1(stu1 s)
{
printf("%s\n",s.name);
printf("%s\n",s.gender);
printf("%d\n",s.age);
printf("%0.2lf\n",s.score);
}
void print2(stu1* p)
{
printf("%s\n",p->name);
printf("%s\n",p->gender);
printf("%d\n",p->age);
printf("%0.2lf\n",p->score);
}
int main()
{
stu1 s={"王二麻子", "男", 22, 98.8};
print1(s);
print2(&s);
return 0;
}
c
王二麻子
男
22
98.80
王二麻子
男
22
98.80
五.结构体在内存的存储
六、参考文献
总结
本文仅仅简单介绍了【C语言】结构体、枚举、联合体验证,评论区欢迎讨论。