本文主要介绍了C语言结构的定义和使用,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。
目录
1.1:结构是用来做什么的?1.2:结构变量的基本定义格式1.3:结构变量的定义1.4结构变量的三种引用方法2。结构变量的使用(直接使用结构变量)2.1输出结果3。使用结构指针操作返回总分最低的学生信息3.1运行结果汇总:
1.1: 结构体用来干嘛?
在生活中,我们会遇到很多表格,比如你的学习成绩、姓名、学号、各科成绩、总分等等。这些是一些不同的数据类型。如果要在C语言中同时使用这些不同的数据,应该怎么做?可以使用结构变量,结构变量是C语言中的结构化数据。顾名思义,它们不同于int等基本原子变量。你可以把它们想象成这些基本变量的集合。
1.2:结构体变量的基本定义格式
结构名称
{
类型名称成员变量名;
类型名称成员变量名;
类型名称成员变量名;
};
注意:struct是一个关键字,是结构类型的描述性标识符。不能省略,结构名可以省略。当我们使用typedef struct时,我们省略它,不写结构名。
1.3:结构体变量的定义
(我们也可以在创建结构的时候声明变量,这里就不赘述了。我提一下我对结构变量的理解:第一,结构是各种基本数据类型的集合,就像我们定义集合s={1,2,3,4},s相当于一个结构变量,它包含了一个结构中的所有成员变量。我们可以引用和操作成员变量.)
结构名称a、b;//定义了两个结构变量。
strcut结构名称S[4];//定义一个包含四个元素的结构变量数组
Strcut结构名* p=a;//定义一个指向结构变量a的结构指针。
1.4结构体变量的三种引用方法
结构。成员名称
(*结构指针)。成员名称
结构指针-成员名//使用指针时推荐使用这个,因为数据结构中有很多这样的引用。
2.结构体变量的使用(直接使用结构体变量)
#包含stdio.h
/*结构的使用*/
int main()
{
strut Job _ exam//定义一个job _ exam的结构
{
无符号数字;//学生ID
char name[10];//名称
char gread _ class[10];//类
int英语;//英语成绩
int中文;//语言成绩
int匹配;//数学成绩
int Sum _ Exam//总分
};
结构job _ exam Most _ Exam _ Student//结构变量用于存储分数最高的学生的信息。
strut job _ exam some _ News[4]={ { 1901,'龙军','三二班',100,100,78},{1902,'李华','三二班',99,99,88},
{1903,'李明','三二班',99,98,90},{1903,'李广','三二班',99,98,80 } };//结构数组用于输入4个同学的信息。
for(int I=0;I 4;I) //依次计算每个学生的总分。
{
某学生新闻[我]。Sum_Exam=SomeStudent_news[i]。英语SomeStudent_news[i]。中国某学生_新闻[i]。匹配;
}
most _ Exam _ Student=some Student _ news[0];//如果第一个学生得分最高
如果(Most_Exam_Student。Sum_Exam SomeStudent_news[1]。Sum _考试)
{
most _ Exam _ Student=some Student _ news[1];
}
else if (Most_Exam_Student。Sum_Exam SomeStudent_news[2]。Sum _考试)
{
most _ Exam _ Student=some Student _ news[2];
}
其他
{
most _ Exam _ Student=some Student _ news[3];
}
Printf('总分最高的学生的信息为:\ n ');
Printf('编号班级的英语语文数学总分\ n ');
printf('%6u %7s %7s m m m m ',Most_Exam_Student.num,Most_Exam_Student.name,Most_Exam_Student.gread_class,Most_Exam_Student。英语,最_考_学生。语文,最_考_学生。匹配,最_考_生。sum _ Exam);
}
2.1输出结果
当用结构变量作为整体传递的函数参数时,应逐个传递所有成员。当成员中存在数组时,传输的时间和空间开销会非常大,严重降低程序的效率。所以我们在使用结构变量时一般不直接传递结构变量,而是传递结构变量的地址,这样就减少了时间类的空间开销。
3.使用结构体指针操作,返回总成绩最低的学生信息
#包含stdio.h
/*结构的使用*/
int Find _ sum exam(struct job _ exam * pa);//函数声明
strut Job _ exam//定义全局job _ exam的结构
{
无符号数字;//学生ID
char name[10];//名称
char gread _ class[10];//类
int英语;//英语成绩
int中文;//语言成绩
int匹配;//数学成绩
int Sum _ Exam//总分
};
strut job _ exam some _ News[4]={ { 1901,'龙军','三二班',100,100,78},{1902,'李华','三二班',99,99,88},/
{1903,'李明','三二班',99,98,90},{1903,'李广','三二班',99,98,80 } };
int main()
{
结构job _ exam Most _ Exam _ Student//结构变量用于存储分数最高的学生的信息。
for(int I=0;I 4;I) //依次计算每个学生的总分。
{
某学生新闻[我]。Sum_Exam=SomeStudent_news[i]。英语SomeStudent_news[i]。中国某学生_新闻[i]。匹配;
}
find _ Sumexam(Most _ Exam _ Student);//函数调用
Printf('总分最低的学生的信息为:\ n ');
Printf('编号班级的英语语文数学总分\ n ');
printf('%6u %7s %7s m m m m ',Most_Exam_Student.num,Most_Exam_Student.name,Most_Exam_Student.gread_class,Most_Exam_Student。英语,最_考_学生。语文,最_考_学生。匹配,最_考_生。sum _ Exam);
}
int _ sum exam(struct job _ exam * pa)//定义一个返回最高学生信息的函数。
{
* pa=some student _ news[0];//如果第一个学生的总分最高
for(int I=1;I 4;我)
{
if(pa-Sum _ Exam some student _ news[I].Sum _考试)
{
* pa=some student _ news[I];//这种转换只需要找到最高学生的地址,返回他的信息。
}
}
返回0;
}
3.1运行结果
总结:
建筑没有什么神奇的。集合包含各种数据类型。我们可以使用任何我们想添加的内容。本质和基础数据类型没什么区别。欢迎在评论区指出问题。
本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。