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

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

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

   9.在函数间传递结构数据

  在函数间传递结构数据主要有以下几种形式:

  (1) 共用全局的外部结构变量。

  (2) 函数设置结构形式参数。

  (3) 函数返回结构值。

  (4) 函数设置结构指针形式参数。

  以函数 dayofYear()为例,设有以下形式的结构类型 struct date,以该类型的结构为形式参数,改写该函数为

  struct date {

  int day;

  int month;

  int year;

  int yearDay;

  char * monthName;

  } date;

  int dayofYear(struct date d)

  { int i,leap,day=d.day;

  leap =(d.year%4==0 && d.year%l00) ||d.year%400==0;

  for( i=0;i

  day += dTbl[leap][i];

  return day;

  }

  调用带结构形式参数的函数,必须提供与形式参数相同类型的结构变量实际参数。主函数中对函数dayofYear()的调用应改写成:

  date.yearDay=dayofYear(date);

  C语言允许函数返回结构型值,如将函数dayofYear()改为设置struct date类型的形式参数,并返回struct date类型的值。对函数dayofYear()的新的改写如下:

  struct date dayofYear(struct date d)

  { int i, leap;

  d.yearDay=d.day;

  leap=(d. year%4==0 && d.year%100) ||d.year%400==0;

  for(i=0;i

  d.yearDay+=dTbl[leap][i];

  return d;

  }

  主函数调用函数dayofYear()把返回的结构值赋给结构变量 date:

  date=dayofYear(date) ;

  再改写函数dayofYear(),使它的形式参数是以struct date结构指针为形式参数。

  void dayofYear(struct date *dp)

  { int i,leap,day =dp-> day;

  leap =(dp -> year%4==0 && dp -> year%l00) ||dp ->year%400==0;

  for(i=0;i< dp -> month-1;i++)

  day+=dThl[leap][i] ;

  dp -> yearDay=day;

  }

  改写后的函数通过指针形式参数引用结构成员,并将计算结果存放在结构的相应成员中,不再返回结果。对该函数的调用方式也需相应地改写成:

  dayofYear(&date);

 

责编:罗莉

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

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

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

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

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

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

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

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

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

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

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