当前位置:首页 > 全部子站 > IT > 水平考试

2011年软件水平考试程序员之程序设计知识点24 2

来源:长理培训发布时间:2017-10-20 13:55:25

  6.结构数组

  一般地,常用结构描述有复杂数据信息的个体,而用数组描述个体的集合。当数组的元素是结构时,这种数组就称为结构数组。如用结构型描述单个学生,而用结构数组表示一个班的学生。

  与定义结构变量的方法相仿,在前述所有定义结构变量的方法中,在变量名之后指定元素个数,就能定义结构数组,也可赋初值。

  如同元素为标准数据类型的数组一样,结构数组各元素在内存中也顺序存放,初始化时,逐一给数组的每个元素指定结构初值。

  对结构数组元素的访问也是利用数组元素下标的引用方法,若引用结构数组元素的成员,再用结构成员的引用方法,写成以下形式:

  结构数组名[元素下标]. 成员名

  即首先是指定数组的元素,再指定结构的成员。

  引用结构数组元素成员地址的标记方法为

  & 结构数组名[元素下标]. 成员名

  引用结构数组元素地址的标记方法为

  & 结构数组名[元素下标]

  引用结构数组首元素地址的标记方法为

  结构数组名

  7.结构指针变量

  把结构变量s所占据的存储段开始地址赋给能指向该结构的指针变量p,就说指针p指向结构变量s。指针p是一个结构指针变量,简称结构指针。定义结构指针的方法,与定义一般指针变量一样,当类型区分符是结构型时,所定义的指针变量即为结构指针。如代码

  struct date *pd, d;

  定义结构指针pd和结构变量成其中,指针变量pd能指向类型为struct date的结构。赋值代码 pd=&d,使指针pd指向结构变量d。

  由指向结构的指针引用结构成员的标记形式为

  结构指针变量名->成员名

  其中" ->"称为指向成员运算符。例如,如下代码:

  pd->day /* 引用结构变量d的成员day*/

  pd_>month /*引用结构变量d的成员month */

  pd-> year /* 引用结构变量d的成员year */

  表达式"* 指针变量" 表示指针变量所指对象,所以通过指针引用其所指结构的成员也可写成以下形式:

  (*指针变量). 结构成员名

  这里圆括号是必需的,因为运算符"*"的优先级低于运算符".",但是几乎不用这种标记方法,习惯都采用指向成员运算符"->"来标记。

  8.指向结构数组元素的指针

  结构指针变量也可指向结构数组的某个元素。如有定义:

  struct stdType std[50], *ps,*p;

  代码:

  ps=&std[2];

  p=std;

  使指针ps指向结构std[2],指针p指向结构std[0]。

  通过指针引用它所指数组元素的成员与指向普通结构一样,如代码 ps-> score引用std[2].score;而代码 p-> score引用std[0].score。

  当结构指针ps指向结构数组的元素std[k] 时,表达式ps+n表示指向结构数组元素 std[k+n]。利用指向结构数组元素的指针,引用结构数组元素的成员又有多种表示形式:

  (1) 利用结构数组元素的指针引用它所指数组元素的成员:

  指针变量->成员名 /* 几乎都这样用 */

  指针变量[0]. 成员名 /* 几乎不用 */

  ( *指针变量).成员名 /* 几乎不用 */

  (2) 利用结构数组元素的指针引用离它所指元素i个元素的成员:

  ( 指针变量+i)->成员名 /* 常用 */

  指针变量[i].成员名 /* 最常用 */

  ( *(指针变量+i)).成员名 /* 几乎不用 */

  以下代码序列实现在结构数组std的前n个元素中找最高分的那个结构,并由指针p指向该结构:

  P= std; /* 等价于p=&std[0] */

  for(ps=p+1; ps

  if(ps-> score> p-> score) p=ps;

  【例 7.1】 以下函数 dayofYear()利用月份天数表,已知日、月、年,计算年中的第几天。

  int dTbl[][12] ={{31,28,31,30,31,30,31,31,30,31,30,31},/*平年*/

  {31,29,31,30,31,30,31,31,30,31,30,31}}; /* 闰年 */

  int dayofYear( int d,int m,int y) /*计算年中第几天 */

  { int i, leap, day=d;

  leap=(y%4==0 && y%100)||y%400==0;

  for( i=0; i

  day += dTbl[leap][i];

  return day;

  }

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部