C语言程序设计 课件 任务4.3 结构体_第1页
C语言程序设计 课件 任务4.3 结构体_第2页
C语言程序设计 课件 任务4.3 结构体_第3页
C语言程序设计 课件 任务4.3 结构体_第4页
C语言程序设计 课件 任务4.3 结构体_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计基础与实践模块四编程高级应用任务4.3结构体C语言程序设计基础与实践课程组04技能点拓展03技能点详解02技能点分析目录CONTENTS任务4.3结构体01问题引入05技能点检测一问题引入现实生活中,我们对某一个物体的描述往往都是通过多个信息的组合来完成,比如一个人,他要有姓名、性别、身高、体重等等基本信息,否则无法完整描述一个人的所有特征。再比如描述书本的信息、动物的信息等等,也是如此。为了描述这类数据,在C语言中设计了一类数据,它描述的是一个对象的信息,但是是通过多种基本类型信息组合来完成,这种数据我们称之为“结构体”,那么结构体在使用时我们应该注意哪些事项呢?04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务4.3结构体二技能点分析1.结构体类型2.结构体与函数3.结构体数组学习目标1.什么是结构体?2.如何声明结构体?3.结构体变量访问有哪些方式?4.如何定义结构体数组?学期预习04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务4.3结构体C数组允许定义可存储相同类型数据项的变量,结构是C编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:标题作者小标题出版号……struct结构体类型名称{

数据类型

成员1;

数据类型

成员2;

数据类型

成员n;}变量1,…变量n;三技能点详解——结构体三技能点详解——1结构体类型声明(1)结构体类型声明以关键字struct开头,后面跟的是结构体类型的名称,该名称的命名规则与变量名相同;(2)结构体类型与整型、浮点型、字符型等类似,只是数据类型,而非变量。(3)声明好一个结构体类型后,编译器并不为其分配内存。structBook{

chartitle[250]; //书的标题

charauthor[250]; //书的作者

charsubject[200]; //书的主题

intbookid; //书的出版号}三技能点详解——2结构体变量定义1)先声明结构体类型,再声明结构体变量,例如:structBookbk1={“C语言编程”,“王教授”,“入门技术”,20220001},bk2={“BASIC语言编程”,“张教授”,“高级技术”,20220002};三技能点详解——2结构体变量定义2)在定义结构体类型的同时定义结构体变量structBook{

chartitle[250]; //书的标题

charauthor[250]; //书的作者

charsubject[200]; //书的主题

intbookid; //书的出版号}bk1,bk2; //Book类型变量bk1,bk2三技能点详解——2结构体变量定义3)结构体变量初始化结构体变量初始化的方式和其他类型变量没有太多区别,主要有两种,就是先声明后初始化和定义事同时初始化两种形式/*声明结构体变量的同时对其进行初始化*/structBook{

chartitle[250];

charauthor[250];

charsubject[200];

intbookid;

}bk1={“c语言编程”,”王教授”,”入门技术”,20220001};/*使用声明后的结构体类型定义结构体变量并对结构体变量初始化*/structBookbk2={“BASIC语言编程”,”张教授”,”高级技术”,202200022};三技能点详解——2结构体变量定义4)结构体数组的访问定义并初始化结构体变量的目的是使用结构体变量中的成员。在C语言中,访问结构体变量中成员的方式如下所示:结构体变量名.成员名例如访问上述定义的structstudentstu变量中的成员:/*声明结构体变量bk1,bk2,并对bk2初始化*/structBookbk1,bk2={“BASIC语言编程”,”张教授”,”高级技术”,202200022};/*通过bk1.titlel访问结构体的成员值赋值给bk1.title*/bk1.title=bk1.titlel;

三技能点详解——案例1/***************************************利用结构体类型编制一程序,实现输入一个学生*的数学期中和期末成绩。**************************************/#include

<stdio.h>voidmain(){structstudy{intmid;

intend;

intaverage; }math; printf("%s","请输入学生的期中和期末数学成绩:"); scanf("%d%d",&math.mid,&math.end); math.average=(math.mid+math.end)/2; printf("学生的期中和期末数学平均成绩是=%d\n",math.average);}三技能点详解——案例2

实例4.3.2

/*******************************************建立一个带有头结点的单向链表,链表结点中的数据*通过键盘输入,当输入数据为-1时,表示输入结束。*链表表空的条件是ph->next=’\0’)。******************************************/#include

<stdio.h>#include

<stdlib.h>//定义一个单向链表类型结构体,其中一个是int数值成员,另一个next是指针,用于指向下一个结点元素

structlist{

intdata; //储存数据的字段

structlist*next; //指向下一个structlist类型数据的指针

};

structlist*creatlist()/ /定义一个

structlist型指针函数creatlist(){structlist*p,*q,*ph;

inta;

/************************************************malloc()用于分配一个structlist类型存储空间,并*返回空间的地址存储在ph中********************************************/ph=(structlist*)malloc(sizeof(structlist));/********************************************创建单向链表,ph记录头指针,p记录新创建的节点,*q记录尾部节点*******************************************/p=q=ph; printf("输入整数,输入–1结束输入

:\n");scanf("%d",&a); //输入一个数据存储在a中

if(a!=-1) //如果第一个数不是-1,开始创建链表

{ph->data=a; //输入数据存储在a中

ph->next='\0'; //节点的next指针置为空'\0'三技能点详解——案例2

scanf("%d",&a);

while(a!=-1) //如果输入的数不是-1,继续创建链表 /*malloc()分配一个structlist类型存储空间作为新节点,地址存储在p中*/{p=(structlist*)malloc(sizeof(structlist)); p->data=a; //a赋值给新创建的链表节点的data成员中

q->next=p; //q节点的next指针指向新创建的节点

q=p; //q指针移动新创建的节点上,作为新的尾部节点

scanf("%d",&a); } p->next='\0'; //最后一个节点的next指针置为空'\0'

}

return(ph); //返回ph中的地址作为函数的返回值

}voidmain(){structlist*head,*p;head=creatlist(); p=head;

while(p!='\0') //通过p指针的移动访问、输出列表中的数据成员的值

{ printf("%d",p->data); p=p->next; //p指针的移动到下一个节点

};}04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务4.2指针四技能点拓展——1结构体与函数在函数间不仅可以传递简单的变量、数组、指针等类型的数据,还可以传递结构体类型的数据。结构体变量作为函数参数的用法与普通变量类似,都需要保证调用函数的实参类型和被调用函数的形参类型相同。可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。函数间不仅可以传递一般的结构体变量,还可以传递结构体数组。使用结构体数组作为函数参数传递数据。四技能点拓展——2

typedef的使用C语言提供了typedef关键字,您可以使用它来为类型取一个新的名字。例如前面所学过的结构体、指针、数组、int、double等都可以使用typedef关键字为它们另取一个名字。使用typedef关键字可以方便程序的移植,减少对硬件的依赖性。基本用法如下typedef

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论