结构体变量
来源:互联网 发布:mac电脑连接电吉他 编辑:程序博客网 时间:2024/06/07 03:25
一、结构体类型的定义
结构体是一种新数据类型,属构造类型,它由若干类型各异的“成员”组成;描述这些“成员”可以使用任何基本数据类型,甚至是另外一种构造数据类型都行。
其实,从本书开篇,就在定义变量,下边的语句我们已经习以为常了:
int i;
我们用整数类型去定义了一个变量i,之所以能这样,是因为int类型是基本类型,C语言系统已经定义好了的。而结构类型是程序员自己定义的,是对C语言基本数据类型的扩充,可以理解为是程序员发明的,所以“要定义结构类型的变量,必须先定义结构类型本身”就顺理成章了。
区别结构体名、结构变量名,掌握通过结构变量访问其成员的方法是学好本章的关键。
打个比方,我们定义一种结构类型(person)描述青年,青年由几个基本属性(即成员)决定(name,color,sex,age等),显然描述这些属性只需要用到基本数据类型就够了。我们可以用这个结构类型person去定义一个具体的青年人zhangshan,zhangshan则称为结构变量名。如果有100个青年人组成了班,那么我们可以把他们定义为一个数组class_one[100],该数组称为结构数组。
每一种具有不同成员的结构体就是一个新的数据类型,所以,在说明和使用结构体之前必须作结构类型的定义。定义结构类型使用关键字“struct”。
下边几行定义结构类型person,并用该类型定义结构变量zhangshan和结构数组class_one[100]:
struct person
{
char name[20]; /* 定义姓名 */
char color[10]; /* 定义肤色 */
char sex[2]; /* 定义性别 */
int age; /* 定义年龄 */
}; /* 注意这里有分号 */
struct person zhangshan, class_one[100];
现在,再定义一个商品结构类型goods,设商品包含属性有:商品名、商品代码、厂商、单价、质量。把相同类型的成员定义在一行,goods可定义如下:
struct goods
{
char goodsname[15], goodcode[15], companyname[30] ;
float price, weight ;
} ;
struct 是结构体的关键字,goods是结构体名,花括号内的所有变量是这个结构体的成员。这种写法虽然节省了程序行,但降低了可读性,故不建议初学者这样写。
综上,结构体类型简称为结构类型,其定义格式为:
struct <结构体名>
{
类型 成员1;
类型 成员2;
……
};
二、结构体类型变量的定义
结构体变量简称为结构变量,它由结构类型定义,有三种定义方法。下面以定义结构类型book和结构变量mybook、storybook为例说明之。
1. 先定义结构类型,再定义结构变量。
structbook /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} ;
struct book mybook, storybook;
用这种方法定义结构变量,是最常用的方法,但须注意不能省略关键字“struct”。还可以在定义结构变量的同时给它的成员赋初值。如:
structbook /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} ;
struct book mybook = { “maths”, 24.7, “电子社”, “zhao” },storybook;
则,mybook变量的price = 24.7。
2. 定义结构类型的同时定义结构变量。
structbook /* 定义结构体类型 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} struct bookmybook,storybook;
3. 不定义结构类型,直接定义结构变量。
struct /* 不定义结构类型名 */
{
char bookname[20];
float price;
char publisher[20];
char author[10];
} struct bookmybook,storybook;
需要说明的是,当某结构类型的成员又是另外一个结构类型时,称嵌套定义,其定义方法如下:
struct brith_date
{
int month ;
int day ;
int year ;
} ;
struct
{
char name[10] ;
charaddress[30];
chartel[12];
int age;
struct data birthday;
char sex[3];
} student_01, employee;
此例直接定义了student_01和employee两个变量,但是没有定义此结构体的名字,因此不能再定义与student_01和employee同类的其它结构变量了!如下行定义是错误的:
truct boy, girl;
- 全局结构体变量
- 结构体变量初始化
- 结构体变量
- 结构体变量作函参
- 结构体变量分析
- 结构体变量
- 结构体类型变量
- 结构体变量初始化
- 结构体指针变量
- 结构体变量
- 结构体与结构体变量
- 结构体指针变量与结构体成员指针变量
- 结构体变量与结构体指针变量的使用方法
- 结构体指针变量与结构体成员指针变量
- 结构体指针变量与结构体成员指针变量
- 结构体指针变量与结构体成员指针变量
- 结构体指针变量与结构体成员指针变量
- 变量、字符、数组、结构体
- 图片移动特效
- 最近在写CMMI文档
- x-window的客户-服务器架构详解
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
- 如何使用 Visual Studio 2005 将应用程序及其资源打包到一个 CAB 文件中
- 结构体变量
- Address already in use: JVM_Bind
- user certificate merge
- ARM指令里几个特殊符号
- 收藏的文章(blog)
- SQL备份文件加密与还原[整理]
- 小石牛
- 企业问题跟踪系统(Issue Tracking System)建设指南
- 需要精通的是思想,不是工具