当前位置:网站首页>(c) meet structure
(c) meet structure
2022-08-05 18:23:00 【I'm going ashore~】
目录
2. Accessing and passing parameters of structure members
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;//Remember not to lose the semicolon
结构体类型的声明
//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 类型重定义/重命名,aka alias
//结构体类型的声明
//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. Accessing and passing parameters of structure members
//. 结构体变量.结构体成员
//-> 结构体指针->结构体成员
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;
}函数传参的时候,参数是需要压栈的.(I will talk about this part in a follow-up article).
如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降.
边栏推荐
猜你喜欢

金仓数据库KingbaseES客户端编程接口指南-DCI(3. DCI 工程配置)

从中序与后序遍历序列构造二叉树

EfficientFormer学习笔记

JVM内存模型分析(通俗易懂)

深信服上网行为管理如何配置双因素/双因子(2FA)身份认证

七夕限定 | 龙凤呈祥2款包袱瓶数字藏品全网独家发售

金仓数据库KingbaseES客户端编程接口指南-DCI(2. 概述)

2022CISCN华东北复现

BHQ淬灭试剂BHQ-2 acid|cas:1214891-99-2|BHQ-2 酸|BHQ-2 羧基的信息你知道多少

cas:1190431-95-8|BHQ-1 acid|BHQ-1羧酸|BHQ-1酸|BHQ-1羧基|BHQ-1Black Hole Quencher-1 acid
随机推荐
Kubernetes 服务发现
Watch监听器的使用
金仓数据库KingbaseES客户端编程接口指南-DCI(3. DCI 工程配置)
DRM架构下如何点亮一块屏
rk3399 休眠唤醒standby调试指南
浓情七夕,有礼相送!
2022年下半年软件设计师知识集锦
ALSA库的移植及测试命令
Kubernetes 平面组件 etcd
4、常用样式
LTC6911 采用 MSOP 封装并具数字可编程增益的双匹配放大器
金仓数据库 KingbaseES V8 GIS 数据迁移方案(5. 第三方通用格式 GIS 数据迁移到 KES)
心脑体漫画版本
YOLOV5学习笔记(五)——使用代码detect train讲解
【软考 系统架构设计师】软件架构设计④ 基于架构的软件开发方法
JVM内存模型分析(通俗易懂)
深信服上网行为管理如何配置双因素/双因子(2FA)身份认证
第十八天笔记
eKuiper Newsletter 2022-07|v1.6.0:Flow 编排 + 更好用的 SQL,轻松表达业务逻辑
nacos和eruka的区别