教学课件 C语言程序设计(第3版).ppt

  1. 1、本文档共601页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档