扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
目录
按需设计可以根据自己的需求进行定制,成都网站制作、成都网站设计构思过程中功能建设理应排到主要部位公司成都网站制作、成都网站设计的运用实际效果公司网站制作网站建立与制做的实际意义导语:
思维导图:
1、结构体的声明
1.1 结构的基础知识
1.2 结构的声明
1.3 结构成员的类型
1.4 结构体变量的定义和初始化
2、结构成员访问
3.结构体传参
结语:
导语:本篇文章讲解结构体的基础知识,对结构体有一个基本的认识,能看懂并会使用结构体。
思维导图:1、结构体的声明 1.1 结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
之前我们学过一种集合的概念——数组,数组就是一组相同元素的集合。而我们现在了解的是一些值的集合,结构的成员可以是不同类型。
那为什么会有结构这个东西呢?原因很简单,我们生活中有很多复杂对象(如图),用一个类型变量无法描述清楚,所以造出来结构来描述我们这些复杂对象。
1.2 结构的声明结构的语法声明:
struct Stu
{
//结构成员
char gender[10];
int age;
char name[20];
float grade;
};
1.3 结构成员的类型 结构的成员可以是标量、数组、指针,甚至是其他结构体。
这是一个类型,就和char、int、flaot一样,只是这里面可以包含各种类型,可以理解为结构体是“综合型选手”。
1.4 结构体变量的定义和初始化结构体变量的定义:
struct Stu
{
//结构成员
char gender[10];
int age;
char name[20];
float grade;
}s3,s4;//s3和s4也是结构体变量 -- 全局变量
int main()
{
struct Stu s1,s2;//s1和s2是结构体变量 --局部变量
return 0;
}
结构体变量的初始化:
struct Stu
{
char gender[10];
int age;
char name[20];
float grade;
}s3,s4;
struct P
{
char address[50];
struct Stu s5;//结构体嵌套
int class;
};
int main()
{
struct Stu s1 = { "男",22,"李华",98.2f };//初始化
struct P s2 = { "武汉",{"女",21,"珍妮",78.4f},108 };//嵌套访问
return 0;
}
2、结构成员访问结构变量的成员是通过点操作符(.)访问的,点操作符接收两个操作数。
代码示例:
struct Stu
{
char gender[10];
int age;
char name[20];
float grade;
}s3,s4;
struct P
{
char address[50];
struct Stu s5;//结构体嵌套
int class;
};
int main()
{
struct Stu s1 = { "男",22,"李华",98.2f };//初始化
struct P s2 = { "武汉",{"女",21,"珍妮",78.4f},108 };//嵌套访问
printf("%s %d %s %.2f\n", s1.gender, s1.age, s1.name, s1.grade);
printf("%s %s %d %s %.2f %d\n", s2.address,s2.s5.gender,s2.s5.age,s2.s5.name,s2.s5.grade,s2.class);//嵌套访问
return 0;
}
另外,也可也通过指针访问变量的成员
struct Stu
{
char gender[10];
int age;
char name[20];
float grade;
}s3,s4;
void Print1(struct Stu s)
{
//结构体变量.成员
printf("%s %d %s %.2f\n", s.gender, s.age, s.name, s.grade);
}
void Print2(struct Stu* s)
{
printf("%s %d %s %.2f\n", (* s).gender, (*s).age, (*s).name, (*s).grade);
//结构体指针->成员
printf("%s %d %s %.2f\n", s->gender, s->age, s->name, s->grade);
}
int main()
{
struct Stu s1 = { "男",22,"李华",98.2f };//初始化
Print1(s1);//传值调用
Print2(&s1);//传址调用
return 0;
}
3.结构体传参刚才我们通过传值调用和传址调用两种形式访问结构体成员,那么哪种方法更好呢?
在我看来,传址调用肯定是好一点的。
结语:传值调用参数会压栈,重新开辟内存,对数据进行存储,另外在传递的时候也会消耗时间,如果结构体过大,那传参的压力比较大,会导致性能的下降;
传址的话,把地址传给函数,一个地址的字节为4个字节或8个字节,这时候传参的压力就会小一点。
本次讲解的内容较为基础,所需掌握的是了解什么是结构体,如何访问结构体成员。要知道结构体也是一个类型(自己创建的),里面包含了各个类型,可以用来描述较复杂的对象。
好了,本次分享就到这里,如果对大家有帮助的话,不妨点个赞支持一下,蟹蟹,再见!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流