C语言结构体的使用及注意事项.pdf

上传人:赵** 文档编号:69250259 上传时间:2023-01-01 格式:PDF 页数:8 大小:454.46KB
返回 下载 相关 举报
C语言结构体的使用及注意事项.pdf_第1页
第1页 / 共8页
C语言结构体的使用及注意事项.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《C语言结构体的使用及注意事项.pdf》由会员分享,可在线阅读,更多相关《C语言结构体的使用及注意事项.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C语结构体的使及注意事项结构(struct):结构是由基本数据类型构成的、并个标识符来命名的各种变量的组合。结构中可以使不同的数据类型。1.结构说明和结构变量定义 在Turbo C中,结构也是种数据类型,可以使结构变量,因此,象其它类型的变量样,在使结构变量时要先对其定义。定义结构变量的般格式为:struct 结构名 类型 变量名;类型 变量名;.结构变量;结构名是结构的标识符不是变量名。类型为第节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和值型)。构成结构的每个类型变量称为结构成员,它象数组的元素样,但数组中元素是以下标来访问的,结构是按变量名字来访问成员的。下举个例来说明怎样定义

2、结构变量。struct string char name8;int age;char sex2;char depart20;float wage1,wage2,wage3,wage4,wage5;person;这个例定义了个结构名为string的结构变量person,如果省略变量名person,则变成对结构的说明。已说明的结构名也可定义结构变量。这样定义时上例变成:struct string char name8;int age;char sex2;char depart20;float wage1,wage2,wage3,wage4,wage5;struct string person;如果

3、需要定义多个具有相同形式的结构变量时这种法较便,它先作结构说明,再结构名来定义变量。例如:struct string Tianyr,Liuqi,.;如果省略结构名,则称之为名结构,这种情况常常出现在函数内部,这种结构时前的例变成:struct char name8;int age;char sex2;char depart20;float wage1,wage2,wage3,wage4,wage5;Tianyr,Liuqi;2.结构变量的使 结构是个新的数据类型,因此结构变量也可以象其它类型的变量样赋值、运算,不同的是结构变量以成员作为基本变量。结构成员的表式为:结构变量.成员名 如果将结构变

4、量.成员名看成个整体,则这个整体的数据类型与结构中该成员的数据类型相同,这样就可象前所讲的变量那样使。下这个例定义了个结构变量,其中每个成员都从键盘接收数据,然后对结构中的浮点数求和,并显运算结果,同时将数据以本式存个名为wage.dat的磁盘件中。请注意这个例中不同结构成员的访问。例3:i nclude main()struct /定义个结构变量 char name8;int age;char sex2;char depart20;float wage1,wage2,wage3,wage4,wage5;a;FILE*fp;float wage;char c=Y;fp=fopen(wage.d

5、at,w);/*创建个件只写*/while(c=Y|c=y)/*判断是否继续循环*/printf(/nName:);scanf(%s,a.name);/*输姓名*/printf(Age:);scanf(%d,&a.wage);/*输年龄*/printf(Sex:);scanf(%d,a.sex);printf(Dept:);scanf(%s,a.depart);printf(Wage1:);scanf(%f,&a.wage1);/*输资*/printf(Wage2:);scanf(%f,&a.wage2);printf(Wage3:);scanf(%f,&a.wage3);printf(Wag

6、e4:);scanf(%f,&a.wage4);printf(Wage5:);scanf(%f,&a.wage5);wage=a.wage1+a.wage2+a.wage3+a.wage4+a.wage5;printf(The sum of wage is%6.2f/n,wage);/*显结果*/fprintf(fp,%10s%4d%4s%30s%10.2f/n,/结果写件 a.name,a.age,a.sex,a.depart,wage);while(1)printf(Continue?);c=getche();if(c=Y|c=y|c=N|c=n)break;fclose(fp);3.结构

7、数组和结构指针 结构是种新的数据类型,同样可以有结构数组和结构指针。、结构数组 结构数组就是具有相同结构类型的变量集合。假如要定义个班级40个同学的姓名、性别、年龄和住址,可以定义成个结构数组。如下所:struct char name8;char sex2;int age;char addr40;student40;也可定义为:struct string char name8;char sex2;int age;char addr40;struct string student40;需要指出的是结构数组成员的访问是以数组元素为结构变量的,其形式为:结构数组元素.成员名 例如:student0.

8、name student30.age 实际上结构数组相当于个维构造,第维是结构数组元素,每个元素是个结构变量,第维是结构成员。注意:结构数组的成员也可以是数组变量。例如:struct a int m35;float f;char s20;y4;为了访问结构a中结构变量y2的这个变量,可写成 y2.m14 、结构指针 结构指针是指向结构的指针。它由个加在结构变量名前的*操作符来定义,例如前已说明的结构定义个结构指针如下:struct string char name8;char sex2;int age;char addr40;*student;也可省略结构指针名只作结构说明,然后再下的语句定义

9、结构指针。struct string*student;使结构指针对结构成员的访问,与结构变量对结构成员的访问在表达式上有所不同。结构指针对结构成员的访问表为:结构指针名-结构成员 其中-是两个符号-和的组合,好象个箭头指向结构成员。例如要给上定义的结构中name和age赋值,可以下语句:strcpy(student-name,Lu G.C);student-age=18;实际上,student-name就是(*student).name的缩写形式。需要指出的是结构指针是指向结构的个指针,即结构中第个成员的地址,因此在使之前应该对结构指针初始化,即分配整个结构长度的字节空间,这可下函数完成,仍以

10、上例来说明如下:student=(struct string*)malloc(size of(struct string);size of(struct string)动求取string结构的字节长度,malloc()函数定义了个为结构长度的内存区域,然后将其诈地址作为结构指针返回。注意:1.结构作为种数据类型,因此定义的结构变量或结构指针变量同样有局部变量和全程变量,视定义的位置定。2.结构变量名不是指向该结构的地址,这与数组名的含义不同,因此若需要求结构中第个成员的地址应该是&结构变量名。4.结构的复杂形式 、嵌套结构 嵌套结构是指在个结构成员中可以包括其它个结构,Turbo C 允许这种

11、嵌套。例如:下是个有嵌套的结构 struct string char name8;int age;struct addr address;student;其中:addr为另个结构的结构名,必须要先进,说明,即 struct addr char city20;unsigned lon zipcode;char tel14;如果要给student结构中成员address结构中的zipcode赋值,则可写成:student.address.zipcode=200001;每个结构成员名从最外层直到最内层逐个被列出,即嵌套式结构成员的表达式是:结构变量名.嵌套结构变量名.结构成员名 其中:嵌套结构可以有

12、很多,结构成员名为最内层结构中不是结构的成员名。、位结构 位结构是种特殊的结构,在需按位访问个字节或字的多个位时,位结构按位运算符更加便。位结构定义的般形式为:struct位结构名 数据类型 变量名:整型常数;数据类型 变量名:整型常数;位结构变量;其中:数据类型必须是int(unsigned或signed)。整型常数必须是负的整数,范围是015,表进制位的个数,即表有多少位。变量名是选择项,可以不命名,这样规定是为了排列需要。例如:下定义了个位结构。struct unsigned incon:8;/*incon占低字节的07共8位*/unsigned txcolor:4;/*txcolor占

13、字节的03位共4位*/unsigned bgcolor:3;/*bgcolor占字节的46位共3位*/unsigned blink:1;/*blink占字节的第7位*/ch;位结构成员的访问与结构成员的访问相同。例如:访问上例位结构中的bgcolor成员可写成:ch.bgcolor 注意:1.位结构中的成员可以定义为unsigned,也可定义为signed,但当成员长度为1时,会被认为是unsigned类型。因为单个位不可能具有符号。2.位结构中的成员不能使数组和指针,但位结构变量可以是数组和指针,如果是指针,其成员访问式同结构指针。3.位结构总长度(位数),是各个位成员定义的位数之和,可以超过两个字节。4.位结构成员可以与其它结构成员起使。例如:struct info char name8;int age;struct addr address;float pay;unsigned state:1;unsigned pay:1;workers;上例的结构定义了关于个从的信息。其中有两个位结构成员,每个位结构成员只有位,因此只占个字节但保存了两个信息,该字节中第位表的状态,第位表资是否已发放。由此可见使位结构可以节省存贮空间。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁