- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定义和使用结构体变量
定义和使用结构体变量
自己建立结构体类型
用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,是属于同一个学生的,因此组成一个组合数据,如student_1的变量,反映它们之间的内在联系。
struct Student
{ intnum;
char name[20];
char sex;
int age;
float score;
charaddr[30];
};
举例如下:
由程序设计者指定了一个结构体类型
struct Student
它包括:num,name,sex,
age,score,addr等不同类型的成员
类型名成员名;
struct结构体名
{
成员表列
};
声明一个结构体类型的一般形式为:
说明:
(1)结构体类型并非只有一种,而是可以设计出许多种结构体类型,例如
struct Teacher
struct Worker
struct Date等结构体类型,可各自包含不同的成员。
struct Date
{ int month,day, year; };
struct Stu
{intnum;int age;
char name[20];char sex;char addr[30];
struct Date birthday;};
(2) 成员可以属于另一个结构体类型。
stract Stu 的示意图如下:
numnamesexageBirthdayaddrmonthdayyear
定义结构体类型变量
前面只是建立了一个结构体类型,它相当于一个模型,并没有定义变量,其中并无具体数据,系统对之也不分配存储单元。它也相当于设计好了图纸,但并未建成具体的房屋。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。
具体方法如下:
1. 先声明结构体类型,再定义该类型变量:
声明结构体类型struct Student,
structStudent student1,student2;
两个变量的存储示意图如下:
student1,
1001Zhang XinM1990.5Shanghai student2,
1002Wang LiF2098Beijing
结构体变量名
为结构体类型名
然后,可以用它来定义变量: struct Student student1,student2;
2.在声明类型的同时定义变量:
struct Student
{ intnum;
char name[20];
char sex;
int age;
float score;
charaddr[30];
} student1,student2;
3.也可以不指定类型名而直接定义结构体类型变量:
其一般形式为:
struct{ 成员表列 }变量名表列;
这样就指定了一个无名的结构体类型 。
我们一定要注意结构体类型与结构体变量的区别:
(1)结构体类型与结构体变量是不同的概念,不要混同。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。
(2)结构体类型中的成员名可以与程序中的变量名相同,但二者不代表同一对象。
(3)对结构体变量中的成员(即“域”),可以单独使用,它的作用与地位相当于普通变量。
结构体变量的初始化和引用
【例9.1】把一个学生的信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生的信息。
解题思路:
(1)自己建立一个结构体类型,包括有关学生信息的各成员;
(2)用它定义结构体变量,同时赋以初值;
#include <stdio.h>
int main()
{
struct Student
{ longintnum;
char name[20];
char sex;
charaddr[20];
}a={10101,“LiLin”,‘M’,“123 BeijingRoad”};
printf("NO.:%ld\nname:%s\nsex:%c\naddress:%s\n"a.num,,a.sex,a.addr);
return 0;
}
(3)输出该结构体变量的各成员。
有以下几点需要注意
:
(1) a.num=10010; 对
printf(“%s\n”,a); 不对
(2) struct Student b;
b=a; 对
b.num++; 对
(3) scanf(″%ld″,&a.num); 对
pri
您可能关注的文档
- 第九章配位化合物与配位滴定法本章要点1.配位化合物的.ppt
- 第九章少数民族教育事业的发展及语言文字政策.ppt
- 第六单元课程改革(二)主讲教师黄甫全.ppt
- 第六讲平稳随机过程的功率谱密度.doc
- 第六章电子商务与企业.ppt
- 第七节联合国的工作一、联合国与和平解决国际争端(略)二.ppt
- 第七届全国中学生生物学竞赛.doc
- 第七章被子植物教案.doc.doc
- 第七章个人所得税的税收筹划.ppt
- 第七章物流企业和第三方物流.ppt
- 2021年执业药师继续教育考试题.pdf
- 硕士研究生《336艺术基础》历年考研真题汇编(多所高校).pdf
- 2022年考研《313历史学》专业基础考试真题(含答案).pdf
- 2023年GCP题库(含答案).pdf
- 2016-2020年天津中考《化学》真题合集及解析.pdf
- 2019年浙江省专升本《语文》考试真题.pdf
- 2012年软考数据库系统工程师考试真题(含答案)(上午+下午).pdf
- 2019-2021年山东编导统考真题合集汇编(原卷).pdf
- 2020年下半年教师资格考试:中小学结构化面试真题及答案解析.pdf
- 2020-2022年全国事业单位联考职业能力倾向测验考试真题(A类 ).pdf
文档评论(0)