C —语言结构体部分-知识点及试题结构体是一种重要的数据结构, 在实践中有广泛的应用。 计算机二级考试大 纲对结构体部分的要求为:(1 结构体类型数据的定义方法和引用方法。(2 用指针和结构体构成链表,单向链表的建立、输出、删除与插入.下面就这些基 本知识点和有关试题进行总结和解析,希望对考试有所帮助。一、基础知识(1 结构体的定义struct 结构体名 例如: struct student{ {成员列表 char name[20];}变量表; int age;char sex;}stu1,stu2 ;注意:结构体定义完后, 别忘了分号!也可这样定义:struct student stu1, stu2 ;结构体数组的定义: struct student x[10];(2 结构体成员的访问两种方式 :直接访问.如:stu1. age用指针访问.先定义指向结构体的指针:struct student *p;然后可以通过:(*p 。 成员变量 或 p-〉成员变量 来访问。(3 关于单项链表先了解两个函数:内存分配函数 malloc如:int *p; p=(int * malloc (sizeof (int;分配一块整型大小 的内存空间.注意:malloc 无返回值,分配内存时要强制类型转换。内存释放函数 freefree ( 要释放内存的地址 ;有关链表具体的操作请参看谭浩强的 《 C 程序设计 (第二版 》 11。7 节(p273重点了解基本思想和相关算法, 其实考试时的程序根本没有书上的难. 在这 里我要说, 重点理解有关链表插入及删除时指针移动的先后顺序问题。 注意指针 的保存和归位. (既头指针的保存和链表遍历时指针的归位 。 这都是考试重点, 信任我没错的。二、典型试题及解析(1 以下程序运行的结果是 _______#include”stdio。h”main({ struct date{ int year , month , day ;} today ;printf(“%d\n”,sizeof(struct date;}A 。6 B.8 C。10 D。12解析:本题考察了不同变量在内存中所占字节的位数。现总结如下(针对 TC2。0 版本:char 型变量占 1 个字节; int 型变量占 2 个字节; long 和 float 型变量占 4 个字节; double 型变量占 8 个字节.本题定义了 3 个 int 型变量,所以选 A。这类计算占字节大小的题,通常和联合体结合起来考。请看下例:变量 a 所占内存字节数是 _______union U{ char st[4];int I ;long l ;} ;struct A{ int c;union U u ;} a ;答案应该是 6 。 注意:联合体分配内存时是根据所占内存最多的一类变量 的数目分配的。而不...