资源描述:
《C语言结构体部分.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言结构体部分--知识点及试题结构体是一种重要的数据结构,在实践中有广泛的应用。计算机二级考试大纲对结构体部分的要求为:(1结构体类型数据的定义方法和引用方法。(2用指针和结构体构成链表,单向链表的建立、输出、删除与插入。下面就这些基本知识点和有关试题进行总结和解析,希望对考试有所帮助。一、基础知识(1结构体的定义struct结构体名例如:structstudent{{成员列表charname[20];}变量表;intage;charsex;}stu1,stu2;注意:结构体定义完后,别忘了分号!也可这样定义:structstuden
2、tstu1,stu2;结构体数组的定义:structstudentx[10];(2结构体成员的访问两种方式:直接访问。如:stu1.age用指针访问。先定义指向结构体的指针:structstudent*p;然后可以通过:(*p.成员变量或p->成员变量来访问。(3关于单项链表先了解两个函数:内存分配函数malloc如:int*p;p=(int*malloc(sizeof(int;分配一块整型大小的内存空间。注意:malloc无返回值,分配内存时要强制类型转换。内存释放函数freefree(要释放内存的地址;有关链表具体的操作请参看谭浩强
3、的《C程序设计(第二版》11.7节(p273重点了解基本思想和相关算法,其实考试时的程序根本没有书上的难。在这里我要说,重点理解有关链表插入及删除时指针移动的先后顺序问题。注意指针的保存和归位。(既头指针的保存和链表遍历时指针的归位。这都是考试重点,相信我没错的。二、典型试题及解析(1以下程序运行的结果是_______#include”stdio.h”main({structdate{intyear,month,day;}today;printf(“%d”,sizeof(structdate;}A.6B.8C.10D.12解析:本题
4、考察了不同变量在内存中所占字节的位数。现总结如下(针对TC2.0版本:char型变量占1个字节;int型变量占2个字节;long和float型变量占4个字节;double型变量占8个字节。本题定义了3个int型变量,所以选A.这类计算占字节大小的题,通常和联合体结合起来考。请看下例:变量a所占内存字节数是_______unionU{charst[4];intI;longl;};structA{intc;unionUu;}a;答案应该是6。注意:联合体分配内存时是按照所占内存最多的一类变量的数目分配的。而不是所有变量所占内存数量的和。特别
5、注意:实际编程中,在没有定义结构体类型变量之前,系统是不会给结构体的成员变量分配内存的。(2以下程序输出结果是_______structstu{intx;int*y;}*p;intdt[4]={10,20,30,40};structstua[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};main({p=a;printf(“%d,”,++p->x;//语句1printf(“%d,”,(++p->x;//语句2printf(“%d”,++(*p->y;//语句3}A.10,20,20B.50,
6、60,21C.51,60,21D60,70,31解析:这类题考察了结构体成员变量的访问以及运算符的优先级。需要注意的是“”的优先级大于“++”和“*”的优先级。语句1中,先执行p->x,得到50后再++,得到结果51。语句2中,先执行(++P,指针移动后,取得成员变量x的值为60。语句3中,先取得*p->y的值,即dt[1]的值,然后++,最后得21。引申一下:将语句一改为printf(“%d”,p++->x;则结果变为:_______答案是50,70,31。好好想一下吧。下面有几道这类练习题,可以强化一下。1.设有以下语句:struc
7、tst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,’ ’},*p;p=&a[0];则以下表达式的值为6的是________A.p++->nB.p->n++C.(*p.n++D.++p->n2.设有以下语句,则下面表达式中的值为3的是_______structs{inta1;structs*a2;};staticstructsa[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr;ptr=&a[1];A.ptr->a1++B.ptr++->a1C
8、.*ptr->a1D.++ptr->a13.若有以下语句,则下面表达式的值为1002的是______structstudent{intage;intnum;};structstudentstu[3]={{1