C课程设计讲解.ppt

C课程设计讲解.ppt

ID:49369695

大小:796.50 KB

页数:43页

时间:2020-02-04

C课程设计讲解.ppt_第1页
C课程设计讲解.ppt_第2页
C课程设计讲解.ppt_第3页
C课程设计讲解.ppt_第4页
C课程设计讲解.ppt_第5页
资源描述:

《C课程设计讲解.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1结构体型变量的定义形式一,类型、变量分别定义:structstaff{charname[20];/*姓名*/chardepartment[20];/*部门*/intsalary;/*工资*/intcost;/*扣款*/intrealsum;/*实发工资*/};structstaffworker1,worker2;2、内存的动态分配2.1动态分配内存的意义2.2开辟和释放内存区的函数1.malloc()函数它的函数原型为void*malloc(unsignedsize);其功能是在内存的动态存贮区中分配长度为size个字节的连续空间。其返

2、回值=分配空间的起始地址(分配成功)空指针NULL(分配失败,一般是没有空间)2.free(p):释放由p指向的内存区,使这部分内存可以分配给其它变量例分配一个能放置双精度数的空间。#includemain(){double*p;p=(double*)malloc(sizeof(double));/*注1*/if(p==0){printf("mallocerror");exit(0);}*p=78.786;printf("*p=%f",*p);}运行结果:*p=78.786000另外,对注1行有两点说明:

3、(1)从malloc函数原形可以得知,其返回值为void*型,现在是对双精度型分配空间,所以要将其返回值强行转换为double*型。(2)程序中出于易于移植的考虑,使用了sizeof(double)作为malloc函数的实参。因为不同机器上的双精度所占的字节数可能不同,用这种方法不论在哪种机器上都能为双精度型数据分配大小正确的空间。另外两个相关函数是calloc()及realloc()其原型为void*calloc(unsignedn,unsignedsize);void*realloc(void*p,unsignedsize);calloc()的功

4、能是分配n个大小为size个字节的连续空间,它实际上是用于动态数组的分配。realloc()的功能是将p所指出的已分配的内存空间重新分配成大小为size个字节的空间。它用于改变已分配的空间的大小,可以增减单元数。9.4.3链表概述图9.3单向链表示意图3建立链表所谓建立链表即是从无到有的形成一个链表。建立链表的思想很简单:逐个地输入各结点的数据,同时建立起各结点的关系。这种建立关系可能是正挂、倒挂或插入,下面介绍前两种:建立链表方法一:正挂——即先建立链头,让链头指向首先开辟并输入数据的第一个结点;然后开辟并输入第二个结点数据,将其“挂”到第一个结点之

5、后;接着开辟第三个结点并输入实际数据,将其“挂”在第二个结点之后……,即按输入顺序将结点“挂”接在一起。在实际编程时,还有些细节要考虑,如是否为空链等。针对9.4.1节提出的问题,我们建立一个职工工资链表,现定义结点类型如下:structstaff{charname[20];intsalary;structstaff*next;};(为了简化程序,减少了原有的数据成员项),在形成链表的过程中,首先要定义头指针,并且还需要两个工作指针p1、p2,其定义如下:structstaff*head,*p1,*p2;具体步骤描述如下:(1)开始时先建一

6、个空链表:head=NULL;形如:head(2)开辟第一个结点空间并由p1指向,即p1=(structstaff*)(malloc(LEN));LEN为结点结构体类型staff的一个变量所占字节数。之后,执行语句:scanf("%s%d",p1->name,&p1->salary);读入其有效数据,(以工资大于0为有效数据),执行head=p1;将其挂到链头上,(如虚线所示,其后的链表图类似)。NULL形如:其中worker1代表第一个工人的姓名;至于head的具体内容是什么,即p1的值是多少,由系统决定,我们无需关心。(3)移动p2,使其指向最后一个

7、结点,即执行p2=p1。形如:(4)再开辟下一个结点的空间由p1指向,即再次执行:p1=(structstaff*)malloc(LEN);读入有效数据后,执行p2->next=p1;将其挂至链尾。(5)重复3、4两步,直至所读数据无效,即p2所指为真正尾结点,此时令p2->next=NULL,建链结束。形如:例正向建立链表程序清单。#include#defineNULL0#defineLENsizeof(structstaff)structstaff{charname[20];intsalary;structstaff*ne

8、xt;};intn;main(){struc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。