第七章 结构体与链表:结构体也是一种构造类型,它由若干类型相同或不同的元素构成。链表的结点可以用结构体类型来描述。7.1结构体类型和变量的定义:结构体是一种由用户自己定义的数据类型,所以要先声明结构体类型,再用声明的结构体类型定义结构体变量。[单选题]结构体变量做函数参数,是参传递给形参的是()选项:[结构体变量的首地址, 结构体变量第一个成员的值, 结构体变量所有成员的值, 其余选项都不对]
7.2结构体变量的使用:除了同类型结构体变量之间的整体赋值之外,结构体变量一般是不能够整体引用,只能引用结构体变量的成员。
7.3结构体数组和指针:在定义数组时,可以指定结构体类型作为数组的元素类型,这种数组称为“结构体数组”;如果一个指针用于存放结构体变量的地址,这样的指针称为结构体指针。
7.4结构体和函数:结构体变量做为函数参数,参数传递方式是批量值传递,如果想要传递地址,也可以用指向结构体的指针变量做函数参数。
7.5链表概述:链表是一种动态存储的数据结构。它由一系列结点组成,每个结点包括两个部分:用于存储数据元素的数据域,及用于存储下一个结点地址的指针域;结点可以在运行时动态生成。
[单选题]C语言定义类型名的关键字是( )选项:[name, define, struct, typedef]
[单选题]当定义一个结构体变量时,系统为它分配的内存空间是( )。选项:[结构中第一个成员所需的内存容量, 结构中一个成员所需的内存容量, 结构中各成员所需内存容量之和, 结构体中占内存容量最大者所需的容量]
[单选题]
定义以下结构体类型
struct s
{
char b;
float f;
};
则语句printf("%d",sizeof(struct s))的输出结果为( )。
[单选题]关于链表,以下说法错误的是( )选项:[链表是一种动态数据结构, 在链表中插入一个节点不需要改变其他节点的物理位置, 链表中的节点可以删除, malloc函数是链表专用的处理函数,不能用在其他地方]
[单选题]
定义以下结构体数组
struct c
{ int x;
int y;
}s[2]={1,3,2,7};语句printf("%d",s[0].x*s[1].x)的输出结果为 ( )。
[单选题]
下面程序的运行结果是( )。
struct KeyWord
{
char Key[20];
int ID;
}kw[]={"void",1,"char",2,"int",3,"float",4,"double",5};
main()
{
printf("%c,%dn",kw[3].Key[0], kw[3].ID);
}
选项:[l,4, n,3, f,4, i,3][单选题]
定义以下结构体数组
struct date
{ int year;
int month;
int day; };
struct s
{ struct date birthday;
char name[20];
} x[4]={{2008, 10, 1, "guangzhou"}, {2009, 12, 25, "Tianjin"}};
语句
printf("%s,%d,%d,%d",x[0].name,x[1].birthday.year); 的输出结果为( )。
[单选题]
根据下面的定义,能输出Mary的语句是( )。
struct person
{
char name[9];
int age;
};
struct person class[5]={"John",17,"Paul",19,"Mary",18,"Adam",16};
[单选题]
如果有下面的定义和赋值,则使用( )不可以输出n中data的值。
struct SNode
{
unsigned id;
int data;
}n,*p;p=&n;