- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 构造数据类型 ;9.1. 结构体类型; 由用户定义的“结构体类型”,可以同标准类型一样作为定义变量的类型。相当于PASCAL语言中的记录(record)。;#define STUDENT struct student
则在程序中可以直接写成:
STUDENT
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
STUDENT st1, st2;;二、 在定义类型的同时定义变量;关于结构体类型的几点说明
? 类型与变量是两个不同的概念。一般先定义结构体类型,再定义变量为该类型。变量可以赋值、存取或运算,而类型没有这些操作。在编译时,对变量分配空间,对类型来说不存在分配空间。
? 对结构体中的分量可以单独使用。;? 分量也可以是一个结构体变量。如 student 中要增加 birthday,则可按如下方式进行定义:;9.1.2A,结构体变量的存储形式; 引用结构体变量应遵守如下规则:
1) 结构体变量中分量的引用方式为:
结构体变量名 ? 分量名[ ? 二级分量名 ? ]
其中:“?”为分量运算符, 在所有的运算符中优先级最高。
2) 结构体变量的分量本身又属于结构体类型时只能对最低级分量进行操作。如:
st1.num、st1.name、st1.birthday.day。
st1.birthday并不会访问st1中的birthday,只会引起警告错误。;4) 分量和结构体变量的地址均可以被引用。如:
scanf(“%d”,st1.num); (输入st1.num的值)
printf(“%x”,st1); (以十六进制输出st1的首地址);9.1.4 结构体变量的初始化;2) 静态存储类的结构体变量初始化;9.2 结构体数组;例9.2 用指向结构体的指针作函数参数(演示)
#include “string.h”
main( )
{ struct student
{long int num;
char name[20];
char sex;
float score;
};
struct student stu;
struct student *p;
p=stu; stu.num=89101;
strcpy(stu.name,“Li Lin” );
stu.sex=‘M’; stu.score=89.5;
printf(“No.:%ld\nname:%s\nsex:%c\nscore:%3.1f \n”,
stu.num,stu.name,stu.sex,stu.score);
printf(“\nNo.:%ld\nname:%s\nsex:%c\nscore:%3.1f \n”,
(*p).num,(*p).name,(*p).sex,(*p).score);
};注意:;9.4 共用体(联合体);说明:虽然“共用体”与“结构体”的定义形式相似,但是:;? 共用体类型可以出现在结构体类型定义中,也可以定义共用体类型数组,数组也可以作为共用体的分量。同样,结构体类型也可以出现在共用体类型定义中。;9.4A,共用体变量的存储形式;二、 共用体变量的引用
不能引用共用体变量,只能采用分量运算符 “ ? ” 引用共用体变量的分量。与引用结构体变量的方法是一致的。
通常,在定义嵌套有共用体变量的结构体变量时,在其中附加一个类型标志,以方便对共用体分量的操作。如:;例9.4a下述程序的输出结果是( 9 )。(演示9-4a.c)
#include stdio.h
void main( )
{ union
{ unsigned char c ;
unsigned int i[4];
}z ;
z.i[0]=0x39 ;
z.i[1]=0x36;
printf(“%c”,z.c);
}
;9.5 动态数据结构;一、 动态存储分配;二、 链表;步骤:
1、定义链表接点数据类型;
2、建立表头(亦即建立一个空表);
3、利用malloc()申请分配一个节点空间;
4、将新节点的指针成员的值赋为空,若是空表,将新节点连接到表头;若非空,将新节点连接到表尾;
5、若有后续节点要接入链表,则转3,否则结束!;? 建立链表;struct node *creat
文档评论(0)