📄 42.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<meta name="Author" content="wdg">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>网上学堂 --> C语言编程宝典之一 -->结 构(struct)</title>
</head>
<body>
<p> </p>
<div align="center"><center>
<table border="1" cellpadding="4" width="640"
bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
<tr>
<td bgcolor="#FFE6B0" bordercolor="#8080FF" class="p9"><font
color="#BB0000">导航条:--></font> <a
href="../../index.html">网上学堂</a> --> <a
href="../tcindex.htm"><font face="宋体">C</font>语言编程宝典之一</a>
-->结
构(struct)</td>
</tr>
<tr>
<td bordercolor="#8080FF" class="p9">
结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。
<br>
结构中可以使用不同的数据类型。 <p>
1. 结构说明和结构变量定义 <br>
在Turbo C中,
结构也是一种数据类型, 可以使用结构变量,
因此, 象其它 <br>
类型的变量一样,
在使用结构变量时要先对其定义。 <br>
定义结构变量的一般格式为: <br>
struct 结构名 <br>
{ <br>
类型 变量名; <br>
类型 变量名; <br>
... <br>
} 结构变量; <br>
结构名是结构的标识符不是变量名。 <br>
类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、
指针型和 <br>
无值型)。 <br>
构成结构的每一个类型变量称为结构成员,
它象数组的元素一样, 但数组中 <br>
元素是以下标来访问的,
而结构是按变量名字来访问成员的。 <br>
下面举一个例子来说明怎样定义结构变量。
<br>
struct string <br>
{ <br>
char name[8]; <br>
int age; <br>
char sex[2]; <br>
char depart[20]; <br>
float wage1, wage2, wage3, wage4, wage5; <br>
} person; <br>
这个例子定义了一个结构名为string的结构变量person,
如果省略变量名 <br>
person,
则变成对结构的说明。用已说明的结构名也可定义结构变量。这样定义
<br>
时上例变成: <br>
struct string <br>
{ <br>
char name[8]; <br>
int age; <br>
char sex[2]; <br>
char depart[20]; <br>
float wage1, wage2, wage3, wage4, wage5; <br>
}; <br>
struct string person; <br>
如果需要定义多个具有相同形式的结构变量时用这种方法比较方便,
它先作 <br>
结构说明, 再用结构名来定义变量。 <br>
例如: <br>
struct string Tianyr, Liuqi,
...; <br>
如果省略结构名,
则称之为无名结构,
这种情况常常出现在函数内部, 用这 <br>
种结构时前面的例子变成: <br>
struct <br>
{ <br>
char name[8]; <br>
int age; <br>
char sex[2]; <br>
char depart[20]; <br>
float wage1, wage2, wage3, wage4, wage5; <br>
} Tianyr, Liuqi; </p>
<p> 2. 结构变量的使用 <br>
结构是一个新的数据类型,
因此结构变量也可以象其它类型的变量一样赋值、
<br>
运算,
不同的是结构变量以成员作为基本变量。 <br>
结构成员的表示方式为: <br>
结构变量.成员名 <br>
如果将"结构变量.成员名"看成一个整体,
则这个整体的数据类型与结构中 <br>
该成员的数据类型相同,
这样就可象前面所讲的变量那样使用。 <br>
下面这个例子定义了一个结构变量,
其中每个成员都从键盘接收数据, 然后 <br>
对结构中的浮点数求和, 并显示运算结果,
同时将数据以文本方式存入一个名为 <br>
wage.dat的磁盘文件中。请注意这个例子中不同结构成员的访问。
<br>
例3: <br>
#include <stdio.h> <br>
main() <br>
{ <br>
struct{
/*定义一个结构变量*/ <br>
char name[8]; <br>
int age; <br>
char sex[2]; <br>
char depart[20]; <br>
float wage1, wage2, wage3, wage4, wage5; <br>
}a; <br>
FILE *fp; <br>
float wage; <br>
char c='Y'; <br>
fp=fopen("wage.dat", "w");
/*创建一个文件只写*/ <br>
while(c=='Y'||c=='y')
/*判断是否继续循环*/ <br>
{ <br>
printf("\nName:"); <br>
scanf("%s", a.name); /*输入姓名*/
<br>
printf("Age:"); <br>
scanf("%d", &a.wage); /*输入年龄*/
<br>
printf("Sex:"); <br>
scanf("%d", a.sex); <br>
printf("Dept:"); <br>
scanf("%s", a.depart); <br>
printf("Wage1:"); <br>
scanf("%f", &a.wage1); /*输入工资*/
<br>
printf("Wage2:"); <br>
scanf("%f", &a.wage2); <br>
printf("Wage3:"); <br>
scanf("%f", &a.wage3); <br>
printf("Wage4:"); <br>
scanf("%f", &a.wage4); <br>
printf("Wage5:"); <br>
scanf("%f", &a.wage5); <br>
wage=a.wage1+a.wage2+a.wage3+a.wage4+a.wage5; <br>
printf("The sum of wage is %6.2f\n", wage);/*显示结果*/
<br>
fprintf(fp, "%10s%4d%4s%30s%10.2f\n", /*结果写入文件*/
<br>
a.name, a.age, a.sex, a.depart, wage); <br>
while(1) <br>
{ <br>
printf("Continue?<Y/N>"); <br>
c=getche(); <br>
if(c=='Y'||c=='y'||c=='N'||c=='n') <br>
break; <br>
} <br>
} <br>
fclose(fp); <br>
} </p>
<p> 3. 结构数组和结构指针 <br>
结构是一种新的数据类型,
同样可以有结构数组和结构指针。 <br>
一、结构数组 <br>
结构数组就是具有相同结构类型的变量集合。假如要定义一个班级40个同学
<br>
的姓名、性别、年龄和住址,
可以定义成一个结构数组。如下所示: <br>
struct{ <br>
char name[8]; <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -