9 结构体与共用体
一、选择填空
答案:C
分析:在本题的说明中定义了一个名为 wc 的结构,它由两个成员组成:整型变量 a 和
指针变量 b。在定义的同时说明了一个指向这一结构类型的指针变量 p。数组 x0 和 x1 都是
含有两个整型元素的一维数组,并赋有初值。x 为一结构型数组,共有两个元素,每一个元
素都具有 struct wc 型的结构(含有两个成员),并赋有初值。执行 p=x;语句后,p 指向这
一结构数组的首地址。
由于 p 指向了 x 数组的首地址,也就是 x[0]的地址,所以答案 A 中的*p->b 等价于
*(x[0].b),其值为 11(注意:运算符->优先于*);答案 B 中的 p->a 即是 x[0].a,其值为 100;
答案 C 中的++p->a 是找到 p->a(其值为 100),再将此值自增 1,取增加 1 以后的值,故为
101;答案 D 是先将指针 p 增 1,指向 x 数组的第二个元素 x[1],即(p++)->a 在此等价于 x[1].a,
其值为 300。
答案:D
分析:本题中的初始数据的构成情况与上题相同。如前所述,答案 A 的值为 11;答案
B 的值与上题的答案 D 相同,为 300;答案 C 是先取内容,后自增 1,等价于*p->b, p++,
故其值也为 11;而答案 D 是 p 先自增 1,指向 x[1],后取值,等价于++p, *p->b,所以其值
为 31。
答案:D
分析:关键字 typedef 是利用已定义的类型标识符来定义新的类型标识符。它并不产生
新的数据类型。其一般形式为:
typedef 类型名标识符;
题中的 long int 就是一个已存在的类型名,而新定义的类型名 BIGGY 就代表着 long int
这个类型标识符。
答案:D
分析:由于本题中定义了一个名为 st 的结构,它由两个成员组成:一个是整型变量 n;
一个是指向自身结构的指针变量 next。接着又定义了具有这一类型的一维数组 a 和指针变量 p。
a 数组含有 3 个元素并赋有初值。p 指向 a 数组的第一个元素。它们之间的关系可用图 表
示。
N next
5 7 9
p
a[0] a[1] a[2]
图 指针变量 p 和数组 a 的关系
由于运算符->的优先级高于运算符++,因此答案 A 的表达式 p++->n 是取 p->n(即
a[0].n)的值 5,然后再使 p++,指向下一个元素;答案 B 仍是先取 p->n(值为 5)作为表达式
的值,再使 p->n 的值加 1;答案 C 的表达式是答案 B 的表达式的另一种表示形式,因此得
到的值也是 5;答案 D 是先取 p->n 的值 5,再增加 1 得到 6。
1
答案:C D
分析:这是一道有关结构的概念题。在结构的定义中,允许结构变量与其成员同名。因
此 A 是错误的;在本题的定义中,st 只是一个结构名,并不占具体的内存单元,只有结构
变量 a 才是实体,运行时要给 a 分配具体的内存单元,所以 B 也是错误的。
答案
9 结构体与共用体 答案 来自淘豆网m.daumloan.com转载请标明出处.