c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言_哔哩哔哩_bilibili学习C语言学习C语言程序设计教程 c语言视频教程 谭浩强 c语言学习 谭浩强 谭浩强c语言零基础入门教程 c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言学习C语言程序设计教程 c语言视频教程 c语言零基础入门教程 c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言学习 C语言 c语言 C语言程序设计https://www.bilibili.com/video/BV1q54y1q79w?我的github主页
remeke (remeke) · GitHuba student. remeke has one repository available. Follow their code on GitHub.https://github.com/remeke今天学习了结构体的相关知识
结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。
#include//描述一个学生 //名字,年龄,电话,性别 struct stu//struct-结构体关键字 stu-结构体标签 struct stu-结构体类型 { char name[20]; short age; char tele[12]; char sex; };//结构体声明是一个语句,最后的分号不可缺少 int main() { struct stu s; return 0; }
#includetypedef struct stu { char name[20]; short age ; char tele[12]; char sex; }stu;//将struct stu重新定义为stu int main() { stu s; return 0; }
结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体
结构体变量的定义和初始化
嵌套结构体时的初始化
#includestruct S { int a; char c; char arr[20]; double d; }; struct T { char ch[10]; struct S s; char *pc; }; int main() { char arr[]="hello,bitn"; struct T t={"hello",{100,'w',"hello world",3.14},arr}; printf("%sn",t.ch); printf("%sn",t.s.arr); printf("%lfn",t.s.d); printf("%sn",t.pc); return 0; }
结构体传参
#includetypedef struct Stu { char name[20]; short age; char tele [12]; char sex[5]; }Stu; void Print1(Stu tmp) { printf("name:%sn",tmp.name); printf("age:%dn",tmp.age); printf("tele:%sn",tmp.tele); printf("sex:%sn",tmp.sex); } void Print2(Stu*ps) { printf("name:%sn",ps->name); printf("age:%dn",ps->age); printf("tele:%sn",ps->tele); printf("sex:%sn",ps->sex); } int main() { Stu s={"李四",40,"12345678901","男"}; Print1(s); Print2(&s); //Print2函数更好Print1函数浪费空间 return 0; }
函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。
结论:结构体传参的时候,要传结构体的地址。



