- 1、本文档共601页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
12.2 结构体的定义12.2.1为什么要定义结构体类型 在程序里表示一个人(姓名、年龄、性别…),怎么表示? 想表示多个人呢? 如何用计算机程序实现下述表格的管理? 数组的解决方法 数组的解决方法 数据的内存管理方式 数组的解决方法 分配内存不集中,寻址效率不高 对数组赋初值时,易发生错位 结构显得零散,不易管理 希望的内存分配图 结构体类型的声明 声明了一个结构体类型 构成结构体的变量称为结构体的成员(Structure Member) 结构体的名字称为结构体标签(Structure Tag) 结构体类型的声明 结构体模板(Structure Template) Don’t forget the semicolon!! 形成一个类型声明的样板 用于生成结构体变量 但并未声明结构体变量 因而编译器不为其分配内存 (1)先定义结构体类型,再定义变量名 (2)在定义类型的同时定义变量 (3)直接定义结构体变量(不指定结构体标签) 12.2.2结构体变量的定义 12.2.3用typedef定义数据类型 struct student stu1, stu2;/*It works*/ student stu1, stu2; /*Can this work?*/ struct stu1, stu2; /*Can this work?*/ STUDENT stu1, stu2; /*It works!*/ 关键字typedef为一种已存在的类型定义一个别名,并未定义新类型 STUDENT与struct student类型是同义词 等价于 12.2.4结构体变量的初始化 等价于 注意! 嵌套的结构体(Nested Structure)就是在一个结构体内包含了另一个结构体作为其成员 12.2.5嵌套的结构体 结构体定义 可以嵌套 访问结构体变量的成员必须使用成员选择运算符(也称圆点运算符) 12.2.6结构体变量的引用 当出现结构体嵌套时,必须以级联方式访问结构体成员 【例12.1】演示结构体变量的赋值和引用方法 12.2.6结构体变量的引用 按结构体的成员顺序逐一对相应成员进行赋值 格式符%02d中2d前面的前导符0表示输出数据时,若左边有多余位,则补0 二维数组的行指针 int (*p)[3]; p = a; //用行地址初始化 逐行查找→逐列查找 p short a[2][3]; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] a+1 a 11.2 指针和二维数组间的关系 二维数组的行指针 int (*p)[3]; p = a; //用行地址初始化 逐行查找-〉逐列查找 for (i=0; i<m; i++) for (j=0; j<n; j++) printf("%d",*(*(p+i)+j)); short a[2][3]; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] p a a+1 11.2 指针和二维数组间的关系 二维数组的列指针 int *p; p = *a; //用列地址初始化 逐个查找——相对偏移量 for (i=0; i<m; i++) for (j=0; j<n; j++) printf("%d",*(p+i*n+j)); p short a[2][3]; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] *a或 a[0] p[i*n+j] 11.2 指针和二维数组间的关系 【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值 11.2 指针和二维数组间的关系 【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值 11.2 指针和二维数组间的关系 形参声明为列数已知的二维数组 【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值 11.2 指针和二维数组间的关系 形参声明为指向列数已知的二维数组的行指针 【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值 11.2 指针和二维数组间的关系 形参声明为指向二维数组的列指针 【例11.3】输入一个3行4列的二维数组,然后输出这个二维数组的元素值 11.2 指针和二维数组间的关系 指针和数组作函数参数 通过指针或数组参数,使调用者获得修改后的数据 通过一个参数把大量的数据送到函数内 如果只向内传送数据,就把参数定义为const,防止意外修改数据,也让函数的功能更明确 void PrintArray(const int *p, in
您可能关注的文档
- 教学课件 创新思维训练.ppt
- 教学课件 基础会计(第三版)李占国.ppt
- 教学课件 国际货运代理--肖旭.ppt
- 教学课件 信息技术导论(第2版)-鄂大伟.ppt
- 教学课件 网络性能测试与分析-林川.ppt
- 教学课件 无线传感器网络-白跃彬.ppt
- 教学课件 现代教育技术(第2版)-陈亚军.ppt
- 教学课件 物联网工程与实践.ppt
- 教学课件 现代教育技术(第2版)-李振亭.ppt
- 教学课件 网络规划与设计教程-杨雅辉.ppt
- GB/T 29324-2024架空导线用碳纤维增强复合材料芯.pdf
- 《GB/T 29324-2024架空导线用碳纤维增强复合材料芯》.pdf
- GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集.pdf
- 《GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集》.pdf
- 中国国家标准 GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集.pdf
- 中国国家标准 GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范.pdf
- GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范.pdf
- 《GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范》.pdf
- GB/T 43860.1220-2024触摸和交互显示 第12-20部分:触摸显示测试方法 多点触摸性能.pdf
- 中国国家标准 GB/T 43860.1220-2024触摸和交互显示 第12-20部分:触摸显示测试方法 多点触摸性能.pdf
1亿VIP精品文档
相关文档
最近下载
- 10万吨年电石乙炔法制VAC项目醋酸乙烯合成工段工艺设计.docx
- 幼儿园禁毒教育课-大手牵小手禁毒一起走.pptx
- QC-T 491-1999汽车筒式减振器尺寸系列及技术条件.pdf VIP
- 自动苏生器仪器.pdf VIP
- 新能源汽车财务风险评估与防范以蔚来汽车为例.pdf VIP
- 冶金建设工程设备与材料划分规定.pdf
- 三菱电梯系列调试资料及、说明 加故障代码子整理比较全的.doc
- CMOS模拟集成电路版图设计:基础、方法与验证 PPT课件 第十章 Calibre LVS常见错误解析.ppt
- QB∕T 5610-2021 硬质聚氯乙烯发泡建筑模板.pdf
- 立式设备安装记录填写示例SH3503-2017.pdf VIP
文档评论(0)