第十四章 结构体内容讲解一.docxVIP

  • 1
  • 0
  • 约5.93千字
  • 约 9页
  • 2024-03-19 发布于上海
  • 举报

当前讲授

第十四章结构体、共用体和用户自定义类型

程序实例

问题:当我们处理复杂的数据信息时,C语言如何实现?比如,管理学生信息(学号、姓名、年龄等),显然以前学过的数据类型很难满足要求。

程序演示:【例】编函数输入10个学生信息,在主函数中调用该函数输入学生信息,然后再输出。

程序清单:

#defineN10

structstudent3 /*定义含有3个成员的结构型student3*/

{longnum;

charname[10];intage;

};

voidmy_in(structstudent3stu1[]) /*无返回值的有参外部函数,形参是结构型数组*/

{inti;

for(i=0;iN;i++)

{scanf(”%ld”,stu1[i].num); /*输入学生的学号*/scanf(”%s”,stu1[i].name); /*输入学生的姓名*/scanf(”%d”,stu1[i].age); /*输入学生的年龄*/

}

return;

}

voidmain()

{structstudent3stu[N]; /*定义结构型student3的数组stu*/inti;

my_in(stu); /*调用函数输入学生信息存入结构型数组

*/

for(i=0;iN;i++) /*依次输出学生的学号、姓名、年龄*/printf(”%ld%s%d\n”,stu[i].num,stu[i].name,stu[i].age);

}

一、用typedef说明一种新类型名

【格式】typedef类型名标识符;

【功能】为已存在的类型用一个新的名字来代表。

【例】typedeffloatREAL; /*定义单精度实型为REAL*/

voidmain()

{REALf1=1.2; /*该语句相当于floatf1=1.2;*/

...

}

【例】typedefint*POINT_I; /*定义POINT_I为整型指针的用户自定义类型*/voidmain()

{POINT_Ip1,p2; /*该语句相当于int*p1,*p2*/

...

}

历年真题

以下关于typedef的叙述错误的是( )。

用typedef可以增加新类型

typedef只是将已存在的类型用一个新的名字来代表

用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名

用typedef为类型说明一个新名,通常可以增加程序的可读性隐藏答案

【答案】A

【解析】typedef只是将已存在的类型用一个新的名字来代表,以增加程序的可读性与书写方便。

二、结构体类型

结构体类型是用户在程序中自己定义的一种来存放类型不同的数据类型,又称“结构体型”。

结构体类型的说明

【例】为学生成绩登记表定义结构型

学号 姓名 性别 年龄 成绩

structstudent /*定义含有5个成员的student结构型*/

{intnum; /*学号*/charname[10]; /*姓名*/

charsex; /*性别*/

shortage; /*年龄*/

floatsc[4]; /*四门课程成绩的*/

};

【例】定义嵌套结构型的例子。

姓名 性别

出生日期

成绩

年 月 日

structdate /*定义含有三个整型成员的date结构型*/

{intyear,month,day;};

structstudent /*定义含有4个成员的student结构型*/

{charname[10]; /*姓名*/charsex; /*性别*/

structdatebirthday; /*出生日期,该成员的数据类型是date结构型*/floatsc[4]; /*四门课程成绩的*/

};

注意,名为“date”的结构型定义必须在结构型“student”的定义之前进行定义,否则,结构型“student”定义时,会出现“date结构型未定义”的错误。

以上结构可以改写成:

structstudent /*定义含有4个成员的student结构型*/

{charname[10]; /*姓名*/charsex; /*性别*/

struct /*定义含有三个整型成员的无名结构型*/

{intyear;intmonth;intday;

}birthday;floatsc[4];

};

结构体类型的变量、数组和指针变量的定义

定义结构体类型的变量、数组和指针变量的四种方式:

文档评论(0)

1亿VIP精品文档

相关文档