- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void main( ) {struct student
{int num; char name[20]; float score; }stu1={1301,”Zhang San”,82.50},*pstu; pstu=&stu1; printf(“No.%d,Name:%s,Score:%f\n”,
当对全部元素进行初始化赋值时,也可以不给出长度。
§12.142.1.指4向结结构构体体变指量针的变指量针
一般形式为:ruct student {int num; char name[20]; float score; }; struct student *pstu;
{int num; char name[20]; float score; }stu1={1301,”Zhang San”,82.50}; printf(“No.%d,Name:%s,Score:%f\n”,
stu1.num,,stu1.score);
}
结构通过体输变入量语句的或赋赋值值语句,实现对结构体变量的
stu1.num,,stu1.score); printf(“No.%d,Name:%s,Score:%f\n”,
(*pstu).num, (*pstu). name, (*pstu). score); printf(“No.%d,Name:%s,Score:%f\n”,
pstu->num, pstu-> name, pstu-> score);
C语言程序设计——结构体和共 用体(完整版)
n 问题:
有时需要将不同类型的数据组合成一个有机
的整体,以便于引用。如:
一个学生有学号/姓名/性别/年龄/地址等属性 int num; char name[20]; char sex; int age; int char addr[30];
num name sex age score addr 100101 Li Fun M 18 87.5 Beijing
其中,定义了一个结构体数组stu,共有3个元素, 每个元素都具有struct student的结构形式。
结构体数组的初始化赋值
例:struct student {int num; char name[20]; float score; }stu[3]={{1301,”Zhang San”,57}, {1302,“Li Si”,82.50},{1303,“Wang Wu”,69}};
stu1.num,,stu1.score); }
嵌套的结构体
一个结构体的成员又是一个结构体。
例: struct date
struct student
{int month;
{int num;
int day;
char name[20];
int year;
char sex;
}
int age;
成员赋值。 例:#include<stdio.h>
void main( ) {struct student
{int num; char name[20]; float score; }stu1; stu1.num=1301; =”Zhang San”; scanf(“%f”,&stu1.score); printf(“No.%d,Name:%s,Score:%f\n”,
结构体变量成员的表示方法: 结构体变量名.成员名
例:stu1.num (学生1的学号) stu1.score(学生1的分数)
结构体变量的初始化
和其他类型变量一样,定义结构体变量的同时,
给它的成员赋初值。 例:#include<stdio.h>
void main( ) {struct student
{int num; char name[20]; float score; }stu1, stu2;
结构体变量的定义
(3)直接定义结构体类型变量 例:struct
{int num; char name[20]; float score; }stu1, stu2;
结构体变量的引用
一般对结构体变量的使用,包括赋值、输入、 输出、运算等都是通过其成员来实现的。
}
12.4.2指向结构体数组的指针变量
结构体指针变量可指向一个结构体数组,其指针变 量的值是整个结构体数组的首地址。
例: 设ps为指向结构体数组的指针变量, 则ps指向该结构体数组的0号元素; ps+1指向该结 构体数组的1号元素。
例:#include<stdio.h> void main( ) {struct student {int num; char name[20]; float score; }stu[3]={{1301,”Zhang San”,57}, {1302,“Li Si”,82.50},{1303,“Wang Wu”,69}}; struct student *ps=stu; ps++; printf(“No.%d,Name:%s,Score:%f\n”, ps->num, ps-> name, ps-> score); }
其中定义了一个指向student的指针变量pstu。
12.4.1指向结构体变量的指针变量
用结构体指针变量,访问结构体变量的各个成员,
一般形式为:
(*结构体指针变量).成员名;
或
结构体指针变量- >成员名;
例: (*pstu).num 或 pstu- >num
例:#include<stdio.h>
struct date birthday;
char addr[30];
};
num name sex age
birthday
addr
month day year
§12.3结构体数组
结构体数组的每一个元素都是具有相同结构类型 的结构体变量。
例:struct student {int num; char name[20]; float score; }stu[3];
结构体变量的定义
(1)先声明结构类型,再定义结构体变量 例:struct student
{int num; char name[20]; float score; }; struct student stu1, stu2;
结构体变量的定义
(2)在声明结构类型的同时定义结构体变量 例:struct student