当前位置:网站首页>(c语言)初识结构体
(c语言)初识结构体
2022-08-05 18:11:00 【我要上岸~】
目录
1. 结构体的声明
1.1 结构的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
例如常见的:int char,long.....
1.2 结构的声明
struct tag
{
member-list;
}variable-list;举两个例子
typedef struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}Stu;//记住分号不能丢
结构体类型的声明
//struct Stu
//{
// char name[20];//名字
// int age;//年龄
// char sex[8];//性别
// float score;
//}s1,s2,s3;
s1,s2,s3是通过struct Stu类型创建的变量
s1,s2,s3是全局变量
1.3 结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体。
1.4 结构体变量的定义和初始化
edef 类型重定义/重命名,也就是取别名
//结构体类型的声明
//typedef struct Stu
//{
// char name[20];//名字
// int age;//年龄
// char sex[8];//性别
// float score;
// }Stu;
//
//int main()
//{
// //s4,s5是局部变量
// //struct Stu 才是结构体类型,不能随便省略struct
//
// struct Stu s4;
// struct Stu s5;
// Stu s6;
//
// return 0;
//}
//
2. 结构体成员的访问与传参
//. 结构体变量.结构体成员
//-> 结构体指针->结构体成员
struct Point
{
int x;
int y;
}p1 = {10, 15};
struct S
{
char c;
struct Point sp;
double d;
char arr[20];
};
void print1(struct S s)
{
printf("%c\n", s.c);
printf("%d %d\n", s.sp.x, s.sp.y);
printf("%lf\n", s.d);
printf("%s\n", s.arr);
}
void print2(struct S* ps)
{
printf("%c\n", ps->c);
printf("%d %d\n", ps->sp.x, ps->sp.y);
printf("%lf\n", ps->d);
printf("%s\n", ps->arr);
}
int main()
{
struct Point p = {100, 200};
struct S ss = { 'w', {100,20}, 5.5, "hello"};
//ss.c = 'b';
//ss.sp.x = 1000;
//ss.sp.y= 2000;
//ss.d = 3.14;
//strcpy(ss.arr, "world");//strcpy字符串拷贝
print1(ss);//打印struct S类型的变量
print2(&ss);//
return 0;
}函数传参的时候,参数是需要压栈的。(这部分内容我会在后续文章中讲到)。
如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降。
边栏推荐
- JVM-第四章 程序计数器
- 核糖核酸RNA的药物修饰方法
- ORACLE ORA-01653: how to deal with the error of unable to extend table
- 铸就算网新未来!《移动云向算力网络演进白皮书》发布
- 三七总皂苷脂质体纳米粒子修饰负载RNA核糖核酸(实验注意事项)
- 阿里云Redis热key优化实践
- 金仓数据库 KingbaseGIS 使用手册(4. 数据管理和查询)
- Kubernetes 平面组件 etcd
- 金鱼哥RHCA回忆录:CL210管理计算资源--课外普及之Nova组件详解
- How to become a qualified DBA?See what the "old fritters" have to say
猜你喜欢

BFD实验演示(Huawei路由器设备配置)

WPF 截图控件之绘制箭头(五)「仿微信」

Meet Alluxio, the "middleman" in MRS

JVM-第四章 程序计数器

LeetCode·每日一题·623.在二叉树中增加一行·递归·迭代

JUC并发编程:第二季

【论文阅读】Multi-view Multi-instance Multi-label Active Learning

金仓数据库 KingbaseES V8 GIS 数据迁移方案(5. 第三方通用格式 GIS 数据迁移到 KES)

How to activate the latest version of IntelliJ IDEA 2022.2

认识一下MRS里的“中间人”Alluxio
随机推荐
按钮弹窗事件
企业数据治理面临的 6 大挑战!
【Swoole系列3.4】进程间通信
第十七天笔记
ORACLE ORA-01653: how to deal with the error of unable to extend table
直播回顾|7 月 Pulsar 中文开发者与用户组会议
使用腾讯云对象存储 COS + PicGo 搭建图床服务
eKuiper Newsletter 2022-07|v1.6.0:Flow 编排 + 更好用的 SQL,轻松表达业务逻辑
金仓数据库 KingbaseES V8 GIS数据迁移方案(4. 基于SuperMap平台的数据迁移到KES)
【软考 系统架构设计师】软件架构设计⑤ 软件架构评估
小程序 路由传参 技能升级
金仓数据库KingbaseES客户端编程接口指南-JDBC(12. 在应用服务器中配置JDBC)
齐岳|纳米二氧化硅/四氧化三铁磁性造影粒子(SiO2/Fe3O4)|壳聚糖脂质体包裹超顺磁四氧化三铁纳米粒子
go pprof 你真用对了吗
「学习笔记」矩阵乘法与矩阵快速幂
调用colmap作为my项目第三方库,debug进入colmap代码调试--CMakeLists配置
JWT漏洞详解
程序员的五种类型
金仓数据库 KingbaseES V8 GIS 数据迁移方案(5. 第三方通用格式 GIS 数据迁移到 KES)
重磅综述|大脑内在神经时间尺度:时间整合与分离