目录
🥑🍓Let's go🍓🥑
一:结构体的声明
1.1结构体的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
1.2结构的声明
struct tag{member - list ;} variable - list ;
🌅🌅具体举例:
struct Stu
{
char name[20];//名字
int age;//年龄
char sex[20];//性别
char id[20];//学号
};
1.3结构体成员的类型
结构体的成员可以是标量、数组、指针、甚至是其他结构体。
1.4结构体变量的定义和初始化
🌄🌄具体举例1:
#include <stdio.h>
struct Stu
{
char name[20];//名字
int age;//年龄
char sex[20];//性别
char id[20];//学号
}s1,s2;//此处的s1与s2为全局变量
int main()
{
//此处的s为局部变量
struct Stu s = { "张三",15,"female","20221006201" };
return 0;
}
🌄🌄具体举例2:
#include <stdio.h>
struct B
{
char c;
short s;
double d;
};
struct Stu
{
char name[20];//名字
int age;//年龄
char sex[20];//性别
char id[20];//学号
};
int main()
{
struct Stu s = { {'b',15,3.14},"张三",15,"female","20221006201"};
return 0;
}
二:结构体成员的访问
. 结构体.成员名
-> 结构体指针->成员名
🌠🌠具体举例:
//书:书名,书号,定价
struct Book
{
char name[20];
char id[20];
int price;
};
#include <stdio.h>
int main()
{
//初始化结构体内容
struct Book b = { "c语言","983947229",55 };
//打印结构体中内容
printf("书名:%s\n", b.name);
printf("书号:%s\n", b.id);
printf("价格:%d\n", b.price);
struct Book* pb = &b;
printf("\n");
printf("\n");
printf("书名:%s\n", (*pb).name);
printf("书号:%s\n", (*pb).id);
printf("价格:%d\n", (*pb).price);
printf("\n");
printf("\n");
printf("书名:%s\n", pb->name);
printf("书号:%s\n", pb->id);
printf("价格:%d\n", pb->price);
return 0;
}
三:结构体传参
🎇 🎇 具体举例:
#include <stdio.h>
struct S
{
int date[1000];
int num;
};
struct S s = { {1,2,3,4},1000 };
void print1(struct S s)
{
printf("%d\n", s.num);
}
void print(struct S* ps)
{
printf("%d\n", ps->num);
}
int main()
{
print1(s);传结构体
print2(&s);传地址
return 0;
}
上面的print1和print2函数哪一个更好 ?
答案是:首选print2函数。
原因:
函数传参的时候,参数是需要压栈的。
如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降。
【总结】:结构体传参的时候,要传结构体的地址。
🌈🌈文章结束☀️☀️
这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀
如果有什么疑问或不同的见解,欢迎评论区留言欧👀