首页考试吧论坛Exam8视线考试商城网络课程模拟考试考友录实用文档求职招聘论文下载
2013中考
法律硕士
2013高考
MBA考试
2013考研
MPA考试
在职研
中科院
考研培训 自学考试 成人高考
四 六 级
GRE考试
攻硕英语
零起点日语
职称英语
口译笔译
申硕英语
零起点韩语
商务英语
日语等级
GMAT考试
公共英语
职称日语
新概念英语
专四专八
博思考试
零起点英语
托福考试
托业考试
零起点法语
雅思考试
成人英语三级
零起点德语
等级考试
华为认证
水平考试
Java认证
职称计算机 微软认证 思科认证 Oracle认证 Linux认证
公 务 员
导游考试
物 流 师
出版资格
单 证 员
报 关 员
外 销 员
价格鉴证
网络编辑
驾 驶 员
报检员
法律顾问
管理咨询
企业培训
社会工作者
银行从业
教师资格
营养师
保险从业
普 通 话
证券从业
跟 单 员
秘书资格
电子商务
期货考试
国际商务
心理咨询
营 销 师
司法考试
国际货运代理人
人力资源管理师
广告师职业水平
卫生资格 执业医师 执业药师 执业护士
会计从业资格
基金从业资格
统计从业资格
经济师
精算师
统计师
会计职称
法律顾问
ACCA考试
注册会计师
资产评估师
审计师考试
高级会计师
注册税务师
国际内审师
理财规划师
美国注册会计师
一级建造师
安全工程师
设备监理师
公路监理师
公路造价师
二级建造师
招标师考试
物业管理师
电气工程师
建筑师考试
造价工程师
注册测绘师
质量工程师
岩土工程师
造价员考试
注册计量师
环保工程师
化工工程师
咨询工程师
结构工程师
城市规划师
材料员考试
监理工程师
房地产估价
土地估价师
安全评价师
房地产经纪人
投资项目管理师
环境影响评价师
土地登记代理人
缤纷校园 实用文档 英语学习 作文大全 求职招聘 论文下载 访谈|游戏
软件水平考试
软件水平考试资讯
软件水平考试试题
软件水平考试专项辅导
软件水平考试交流互动
软件水平考试交流互动
您现在的位置: 考试吧 > 软件水平考试 > 复习资料 > 程序员资料 > 正文

C语言初学者入门知识之结构体1

  3. 直接说明结构变量。例如:

  struct

  {

  int num;

  char name[20];

  char sex;

  float score;

  }boy1,boy2;

  第三种方法与第二种方法的区别在于第三种方法中省去了结构名,而直接给出结构变量。说明了boy1,boy2变量为stu类型后,即可向这两个变量中的各个成员赋值。在上述stu结构定义中,所有的成员都是基本数据类型或数组类型。成员也可以又是一个结构, 即构成了嵌套的结构。例如:

  struct date{

  int month;

  int day;

  int year;

  }

  struct{

  int num;

  char name[20];

  char sex;

  struct date birthday;

  float score;

  }boy1,boy2;

  首先定义一个结构date,由month(月)、day(日)、year(年) 三个成员组成。 在定义并说明变量 boy1 和 boy2 时,其中的成员birthday被说明为data结构类型。成员名可与程序中其它变量同名,互不干扰。结构变量成员的表示方法在程序中使用结构变量时, 往往不把它作为一个整体来使用。

  在ANSI C中除了允许具有相同类型的结构变量相互赋值以外, 一般对结构变量的使用,包括赋值、输入、输出、 运算等都是通过结构变量的成员来实现的。

  表示结构变量成员的一般形式是:结构变量名。成员名 例如:boy1.num 即第一个人的学号 boy2.sex 即第二个人的性别如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。例如:boy1.birthday.month 即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。

  结构变量的赋值

  前面已经介绍,结构变量的赋值就是给各成员赋值。 可用输入语句或赋值语句来完成。

  [例7.1]给结构变量赋值并输出其值。

  main(){

  struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  } boy1,boy2;

  boy1.num=102;

  boy1.name="Zhang ping";

  printf("input sex and score\n");

  scanf("%c %f",&boy1.sex,&boy1.score);

  boy2=boy1;

  printf("Number=%d\nName=%s\n",boy2.num,boy2.name);

  printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);

  }

  struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  }boy1,boy2;

  boy1.num=102;

  boy1.name="Zhang ping";

  printf("input sex and score\n");

  scanf("%c %f",&boy1.sex,&boy1.score);

  boy2=boy1;

  printf("Number=%d\nName=%s\n",boy2.num,boy2.name);

  printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);

  本程序中用赋值语句给num和name两个成员赋值,name是一个字符串指针变量。用scanf函数动态地输入sex和score成员值,然后把boy1的所有成员的值整体赋予boy2。最后分别输出boy2的各个成员值。本例表示了结构变量的赋值、输入和输出的方法。

  结构变量的初始化

  如果结构变量是全局变量或为静态变量, 则可对它作初始化赋值。对局部或自动结构变量不能作初始化赋值。

  [例7.2]外部结构变量初始化。

  struct stu /*定义结构*/

  {

  int num;

  char *name;

  char sex;

  float score;

  } boy2,boy1={102,"Zhang ping",'M',78.5};

  main()

  {

  boy2=boy1;

  printf("Number=%d\nName=%s\n",boy2.num,boy2.name);

  printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);

  }

  struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  }boy2,boy1={102,"Zhang ping",'M',78.5};

  main()

  {

  boy2=boy1;

  ……

  }

  本例中,boy2,boy1均被定义为外部结构变量,并对boy1作了初始化赋值。在main函数中,把boy1的值整体赋予boy2,然后用两个printf语句输出boy2各成员的值。

  [例7.3]静态结构变量初始化。

  main()

  {

  static struct stu /*定义静态结构变量*/

  {

  int num;

  char *name;

  char sex;

  float score;

  }boy2,boy1={102,"Zhang ping",'M',78.5};

  boy2=boy1;

  printf("Number=%d\nName=%s\n",boy2.num,boy2.name);

  printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);

  }

  static struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  }boy2,boy1={102,"Zhang ping",'M',78.5};

  本例是把boy1,boy2都定义为静态局部的结构变量, 同样可以作初始化赋值。

  相关推荐:

  2012年软考系统分析师考试60天完美复习计划

  2012年软件水平考试网络工程师章节笔记讲义汇总

  2012年上半年软件水平考试成绩查询汇总

文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。