实验10 结构体及共用体.docVIP

  • 6
  • 0
  • 约5.4千字
  • 约 7页
  • 2017-05-28 发布于贵州
  • 举报
实验10 结构体及共用体

实验十 结构体与共用体 实验目的: 结构体类型变量的定义和引用 结构体类型数组的概念和引用 指向结构体类型的指针的引用 共用体的定义及引用 链表的概念,会实现链表的创建 实验相关内容简介: 实结构体是个能够包含不同数据类型的一个结构,是一种能够自己定义的数据类型struct 结构类型名 { 数据类型 数据项1; 数据类型 数据项2; … … 数据类型 数据项n; }; //注意此处定义时分号不能少 其中的结构类型名表明了一种新的构造数据类型,其中的数据项称为结构体的数据成员。 结构体变量定义 结构体变量定义的形式通常有如下三种方法: (1)先定义结构体类型,再定义结构体类型变量:struct date { int day;  int month;  int year; }; struct date time1,time2; (2)定义结构体类型同时定义结构体类型变量:struct stu {long int num; char name[20]; char sex; float score; struct date time1; //此处结构的成员也是个结构体 }stu1,stu2; (3)直接定义结构体类型变量:   struct   {char name[20]; / *通讯录姓名* /   char sex; / *性别* /   long telephone; / *电话* /    char address; / *住址* /   } person1,person2; / *定义该结构体类型变量* / 该定义方法由于无法记录该结构体类型,所以除直接定义外,不能再定义该结构体类型变量。 结构体变量成员的引用 结构体变量的成员引用形式为:结构体变量名.成员名 如time1.year=1980;是给结构体变量time1中的year变量赋上年份值;stu1.time1.year=1985;则是给student中time1成员中的year成员赋值, 结构体数组的定义 struct 结构体类型名 结构体变量名[数组长度]; 如:struct stu std[3];则std是一个包含3个结构体的结构体数组。 结构体类型的指针 (1)指向结构体变量的指针 struct stu stu1,*p; p=stu1; 此处将结构体stu1的地址赋给了p,p成为了指向结构体stu1的指针变量。 (2)指向结构体类型的指针引用 引用形式:指针变量-成员名 如p-num=10 //此表达式的效果相当于stu1.num=10; (3) 指向结构体数组的指针 struct stu stu1[3],*p; p=stu1; //此处变量名前不需加取址符号,因stu1本身就代表一个地址 (4)指向结构体数组的指针引用 引用方式较为灵活:①指针变量[下标].成员名 如:p[i].num ②(指针变量+i)-成员名 #include stdio.h struct stu {long int num; char name[20]; char sex; float score; }stu1[3],*p; main() {int i; p=stu1; i=2; p[2].num=15; //利用数组下标方法给结构体成员赋值 (p+3)-num=20; //利用结构体指针为结构体成员赋值 printf(%d %d,stu1[2].num,stu1[3].num); } 共用体类型 union 共用体类型名 { 数据类型 数据项1; 数据类型 数据项2; … … 数据类型 数据项n; }; //注意此处定义时分号不能少 共用体又称为联合体,它和结构体的不同之处是,联合体的所有成员占用一个公共的空间,而共用体所占的空间应该是各个成员存储空间之和。 如 union stu {long int num; //4字节 char name[20]; //20字节 char sex; //1字节 float score; //4字节 } 联合体stu所占的空间是20字节。 链表处理-结构指针的应用 链表是一种常见的重要的数据结构,采用动态的分配方法为一个结构体分配内存空间,可使用malloc函数分配。构成链表的每一个结构体被称为结点。 在动态分配时,每个结点可以是不连续的(每个结点内是连续的),结点间的联系通过指针来实现,即在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常称为指针域。可在第一个结点的指针域存放第二个结点的首地址,如此串下去直到最后一

文档评论(0)

1亿VIP精品文档

相关文档