栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【学习笔记之菜Dog学C】结构体初阶

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【学习笔记之菜Dog学C】结构体初阶

文章目录
  • 结构体的声明
  • 结构体成员访问
  • 结构体传参

结构体的声明

  结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。
  结构成员的类型可以是标量、数组、指针、甚至是其他结构体

struct B {
	char c;
	short s;
	double d;
};
struct Stu {
	struct B sb;
	char name[20];
	int age;
	char id[20];
} s1,s2;//s1、s2也是结构体变量
//s1、s2是全局变量
int main() {
	//s是局部变量
	struct Stu s = { { 'a', 20 , 3.14}, "张三", 18, "1212213213"};//对象

	return 0;
}
结构体成员访问
struct B {
	char c;
	short s;
	double d;
};
struct Stu {
	struct B sb;
	char name[20];
	int age;
	char id[20];
};
int main() {
	//s是局部变量
	struct Stu s = { { 'a', 20 , 3.14}, "张三", 18, "1212213213"};//对象
	// . ->
	printf("%cnn", s.sb.c);

	struct Stu* ps = &s;
	printf("%cn", (*ps).sb.c);
	printf("%cn", ps->sb.c);

	return 0;
}
结构体传参
struct B {
	char c;
	short s;
	double d;
};
struct Stu {
	struct B sb;
	char name[20];
	int age;
	char id[20];
};
void print1(struct Stu t) {
	printf("%c %d %lf %s %d %sn", t.sb.c, t.sb.s, t.sb.d, t.name, t.age, t.id);
}
void print2(struct Stu* ps) {
	printf("%c %d %lf %s %d %sn", ps->sb.c, ps->sb.s, ps->sb.d, ps->name, ps->age, ps->id);
}
int main() {
	struct Stu s = { { 'a', 20 , 3.14}, "张三", 18, "1212213213" };
	print1(s);//传值调用
	print2(&s);//传址调用

	return 0;
}

  函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。
  栈是一种数据结构,特点是先进的后出,后进的先出;
  给栈中存放数据的操作叫压栈,删除栈中数据的操作叫出栈;
  每个函数调用都会在内存的栈区上开辟一块空间。
  所以我我们在给结构体传参的时候要尽量传地址。

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015562.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号