网站大量收购独家精品文档,联系QQ:2885784924

第十章结构体.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章结构体和共用体 10.1概述 引入: 将不同的类型的数据组合成一个有机的整体,以便于引用,这些组合在一个整体中的数据是互相联系的。它相当于其他高级语言中的“记录” C没有现成的数据类型,因此用户必须要在程序中建立所需的结构体类型 声明一个结构体类型的一般形式: struct 结构体名 {成员表列}; 结构体名用作结构体类型的标志,又称为结构体标记 大括号内是该结构体中的各个成员,由它们组成一个结构体,对各个成员都应进行类型声明:即:类型名 成员名;把成员表列称为“域表”,每个成员也称为结构体中的一个域 10.2定义结构体类型变量 先声明结构体类型再定义变量名 struct student {…}; struct student student1,student2; 结构体类型名 结构体变量名 在声明类型的时候同时定义变量 struct student {…}student1,student2; 这种形式的定义的一般形式为: struct student {成员表列}变量名表列; 直接定义结构体类型变量 一般形式为: struct {成员表列}变量名表列; 此结构不出现结构体名 struct {…}student1,student2; 11.3结构体变量的引用 引用规则 不能将一个结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员分别进行输入和输出 引用方式为: 结构体变量名.成员名 student1.num=6001; .是成员运算符,所有运算符中它的优先级最高 可以引用结构体变量成员的地址,也可以引用结构体变量的地址 scanf(“%d”,student1.num); printf(“%o”,student1); 不能用以下语句整体读入结构体 变量 scanf(“%d,%s,%c,%d,%f,%s”,student1); 10.4结构体 变量的初始化 对结构体变量定义的时候初始化 10.5结构体数组 结构体数组与原来的数组不同的地方就在于每个数组元素都是一个结构体类型的数据,分别可以包括各个成员项。 定义结构体数组 和定义结构体变量的方法类似,只需说明其为数组即可 结构体数组的初始化(1) 结构体数组的初始化(2) 10.6指向结构体类型数据的指针 为了使用方便和直观,可以把(*p).num改用p-num来代替,它表示*p所指向的结构体变量中的num成员:可以用这三种方式 结构体变量.成员名 (*p).成员名 p-成员名 分析以下几种运算: p-n 得到p指向的结构体变量中的成员n的值 p-n++ 得到p指向的结构体变量中的成员n的值,用完该值后使它加1 ++p-n 得到p指向的结构体变量中的成员n的值使之加1(先加) 指向结构体数组的指针 说明: p是指向struct student结构体类型的数据的指针变量,p的初值为stu,它指向一个struct student型的数据,不应指向stu数组元素的某个成员 p加1意味着p所增加的值为结构体数组stu的一个元素所占的字节数,p++后p的值等于stu+1,指向stu[1]的起始地址 (++p)-num,先使p自加1,然后得到它指向的元素中的num成员值 (p++)-num,先得到p-num的值,然后p自加1 用结构体变量和指向结构体的指针作函数参数 用结构体变量作实参,采取的是“值传递”,将结构体变量所占的内存单元的内容全部顺序传递给形参,形参也必须是同类型的结构体变量,但这种传递在空间和时间上的开销比较大,因此比较少用这种方法 用指向结构体变量(或数组)的指针作实参,将结构体变量(或数组)的地址传递给形参 用结构体变量作参数 用指向结构体变量的指针作实参 10.7用指针处理链表 是动态进行存储分配的一种结构 用数组存放数据时,必须事先定义固定的长度,链表就没有这种限制,它根据需要开辟内存单元 链表有一个“头指针”变量,以head表示,它存放一个地址,该地址指向一个元素 链表中的每一个节点称为”结点“,每个节点包含两个部分:一、用户需要的实际数据;二、下一个结点的地址 最后一个元素为“表尾”,它的地址部分放一个“NULL”,表示空地址,链表到此结束 各个结点在内存中并不是连续存放的,要找到一个元素必须先找到它前面的元素,根据它提供的地址才能找到下一个元素 链表中的结点是结构体类型最合适,因为一个结构体变量可以包含若干类型的成员,包括指针类型 简单链表的建立和输出 处理动态链表所需函数 malloc函数 函数原型:malloc(unsigned int size); 作用:在内存的动态存储区中分配一个长度为size的连续空间,此函数的返回值是一个指向分配域起始地址的指针 calloc函数 函数原型:calloc(u

文档评论(0)

pujunlin + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档