




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构预备知识 定义常量 define常量名 defineLIST INIT SIZE10 结构体 structure 结构体实际上就是几个变量组合起来形成的一个复合体 定义一个结构体后相当于产生了一个新的数据类型 用该数据类型可以去定义一个变量 那么该变量就是一个结构体类型变量 声明结构体类型的方式 struct结构体名 成员表 例 structstudent intnum charsex struct结构体名 成员表 变量名列表 例 structstudent intnum charsex student1 student2 结构体变量的定义方式 struct 成员表 变量名列表 structstudentstudent1 student2 说明 声明结构体类型student时 只是向系统声明有这样一个类型存在 但不分配任何内存空间 而用结构体定义变量后则会给studet1和student2这两个变量分配内存 本例中各分配3个字节的内存空间 结构体变量不能作为一个整体使用 而只能引用结构体变量的成员 使用方式为 结构体变量名 成员名如 student1 num 指针 指针变量是专门用来存放地址的 指针变量首先是一个变量 被定义后就会为其分配内存空间 不过此时该内存空间存放的是一个地址 例如 int p那么内存会为p分配空间 p的内容是一个地址 所以 p才是指p变量存放的地址的内容 指向结构体类型数据的指针 可以设一个指针变量 用来指向一个结构体变量 此时该指针变量的值是结构体变量的起始地址 例 structstudent intnum charsex student1 student2 structstudent p p是一个结构体类型的指针 指向structstudent类型的数据p p所指向的结构体变量中的num成员 typedef的用法 其作用是把一个数据类型用另外的名字来代替例如 typedefintdatatype 注意 Typedef不可能创造任何新的数据类型 而仅仅是在原有的数据类型中命名一个新名字 其目的是使你的程序更易阅读和移植 typedef的用法 定义一个结构体后 那么该结构体也是一个数据类型 所以我们也可以把一个结构体类型用另外的名字来取代 typedefstruct 成员表 新类型名 例 typedefstruct intnum charsex student typedefstruct结构体类型名 成员表 新类型名 例 typedefstructstudent intnum charsex student typedef和指针结合 typedefint p此时 p被声明为整型指针类型 这也是一个类型 所以可以用下面语句 pm 此句含义是定义了一个指针变量m 因为p本身就是一个指针类型 所以他定义的变量也都是指针变量 由此引申到结构体类型 如下 Typedefstruct intnum charsex student student则是一个结构体指针类型 用它定义的变量均为结构体指针变量 TypedefstructLnode intdata structLnode next Lnode LinkList Q1 第一行的Lnode与最后一行的Lnode是不是一回事 A1 不是 前者Lnode是结构名 后者Lnode是整个struct类型的新名字 是一种 新定义名 typedef的用法 Q2 结构体中间的那个structLnode是何意 A2 在 新定义名 Lnode还没出现之前 只能用原始的structLnode来进行变量说明 此处说明了指针分量的数据类型是structLnode 函数 1 一个源程序由一个或多个函数构成 函数之间可以互相调用 2 从用户角度看 函数有两种 标准函数 即库函数 由系统提供 可以直接使用 但是头文件需要引入用户自定义函数 有用户自己根据需要编制 3 从函数形式看 函数可以分为无参数函数 主函数不传递数据给函数 函数可以带回函数值 也可以不带回函数值有参数函数 主函数和被调用函数之间有数据传递 即 主函数可以将数据传给被调用函数使用 被调用函数中的数据也可以带回来供主函数使用 函数的定义 类型标识符函数名 形参列表 函数体 类型标识符说明该函数如有返回值 那么返回值的类型是什么 对于形参 只有发生函数调用时 才会为形参分配内存空间 函数调用结束后 形参所占用内存释放 形参的类型必须指定 且实参和形参类型应该相同或赋值兼容 实参和形参之间的数据传递是单向的 即实参可以传送递数据给形参 但是形参不可以传递数据给实参 也就是说 形参无法改变实参的值 如需要从被调用函数返回数据给主函数 那么必须用return语句 如函数不返回值 那么函数需要定义为void类型 函数的参数传递 参数传递两种方式 按值传递和按地址传递 值传递是把实参的值复制一份给形参 在内存中实参变量形参变量各自占内存空间 但内容一样 地址传递是实参把变量的地址给形参 此时 在内存中实参形参各自占内存空间 但形参存放的是实参变量的地址 那么采用 的方式就可以改变实参的值 voidExchg1 intx inty inttmp tmp x x y y tmp printf x d y d n x y voidmain inta 4 b 6 Exchg1 a b printf a d b d n a b 函数参数传递例1 如果指针作为形参 那么实参可以是一个变量的地址 如 Exchg2 int px int py inttmp px px py py tmp print px d py d n px py main inta 4 intb 6 Exchg2 函数参数传递例2 1 实参形参都是结构体类型 那么实参把结构体变量的值复制一份传递给形参 按照的是值传递 2 形参是结构体指针类型 实参就要是结构体地址传递 如下 假设student为结构体类型 p为结构体变量intmax student L main max p 此时 结构体变量p的首地址传递给结构体指针变量L 那么 L就会修改p变量的值 结构体作为参数 函数参数传递 综上 如果不需要改变实参的值 参数之间使用值传递 如果我们需要通过形参改变实参的值 那么实参为以 malloc函数 原型 void malloc unsignedsize 作用 在内存中开辟size大小的空间 并且得到指向大小为size的内存区域的首字节的指针 Realloc函数 原型 void realloc void p size tsize 解释 realloc函数将p指向的对象的长度修改为size个字节 如果新分配的内存比原来的大 则原来的数据保持不变 增加的空间不进行初始化 realloc函数返回指向新分配空间的指针 若无法满足要求则返回NULL指针 在这种情况下 原指针p指向的单元内容保持不变 指向指针的指针 可以设一个指针变量来指向另一个指针 此即为指针的指针 那么指向指针的指针变量本身也是一个变量 也占内存 其存放的将是另一个指针变量的地址 即该指针变量存放的是地址的地址 如 int p int s intm s p中存放的是s的地址 s则是m的内容 p则是s的内容 即m的地址 p 是m的内容 思考 1 s2 p3 p 实参也可以是一个指针 Exchg2 int px int py int p p px px py py p print px d py d n px py main int pointer1 pointer2 inta 4 intb 6 pointer1 函数参数传递例3 形参实参都是结构体类型指针 此时 传递的只是一个结构体变量的首地址 且并不确定该地址 此时 修改形参不会对实参造成任何改变 如实参为结构体指针变量 且想通过形参改变实参的值 那么形参必须定义为指针的指针 Intmax student L Main student pmax p 结构体作为参数 此时 p的地址传递给L 在内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版出租车行业质量管理体系认证合同
- 2025版货车车辆购销及汽车后市场综合服务合同
- 2025版共同基金交易代理合作协议
- 2025版生态循环菜场承包经营协议书
- 2025版建筑工程施工合同履行监督协议范本
- 二零二五年度房屋买卖过户涉及的租赁合同续签协议
- 2025版某某投资合伙企业投资合作条款补充协议
- 二零二五年度科技园区承揽工程合同范本
- 2025湖南衡阳师范学院招聘20人考试参考题库附答案解析
- 2025贵州三都水族自治县人民医院(医共体)总院招聘见习人员38人笔试模拟试题及答案解析
- 招标书和投标书范本
- 国家开发银行生源地信用助学贷款预申请表
- 火龙罐联合耳穴压豆治疗失眠个案护理
- 动词的时态、语态和主谓一致
- 平面设计表现技法(手绘·数字化)全套完整教学课件
- 2023年基层卫生岗位练兵和技能竞赛试题及答案全科医疗组
- 心肺复苏及AED的使用
- 中国石油大学工程流体力学教案
- 真空带式干燥机3Q验证文件模板
- YC/T 507-2014烟草测土配方施肥工作规程
- NB-T 10935-2022 除氧器技术条件
评论
0/150
提交评论