若有下面的说明和定义,则sizeof(struct aa) 的值是struct aa {int rl;double r2;float r3;union

题目

若有下面的说明和定义,则sizeof(struct aa) 的值是 struct aa { int rl;double r2;float r3; union uu {char ul [5];long u2[2]}ua; }mya;

A.30

B.29

C.24

D.22

参考答案和解析
正确答案:D
解析:结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元;共用体变量所占的内存长度等于最长的成员的长度。结构体变量aa中,成员r1占2个字节,r2占8个字节,r3占4个字节,共用体ua占8个字节,所以共占用2+8+4+8=22个字节。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下对结构体类型变量的定义中,不正确的是( )

A.typedef struct aa { int n; float m; }AA; AA tdl;

B.#define AA struct aa AA{ int n; float m; }tdl;

C.struct { int n; float m; }aa; struct aa tdl;

D.struct { int n; float m, }tdl;


正确答案:C

第2题:

以下对结构体类型变量的定义中,不正确的是_______。

A.typedef struct aa { int n; float m; }aa; aa td1;

B.#define aa struct aa aa{ int n; float m; }td1;

C.struct { int n; float m; }aa; struct aa td1;

D.struct { int n; float m; }td1;


正确答案:C
解析:本题的考查点是结构体类型变量的定义。在选项C中,aa是—个结构体变量,而不是结构体名,所以structaatd1;是非法的。

第3题:

以下对结构体类型变量的定义中,不正确的是

A.typedef struct aa

{ int n;

float m;

}AA;

AA tdl;

B.#define AA struct aa

AA{ int n;

float m;

} tdl;

C.struct

{ int n;

float m;

} aa;

struct aa tdl;

D.struct

{ int n;

float m;

} tdl;


正确答案:C

第4题:

以下对结构体类型变量td的定义中,错误的是( )。

A.typcdef struct aa { int n; float m; } AA; AA td;

B.struct aa {int n; float m; } struct aa td;

C.struct {int n; float m; } aa; struct aa td;

D.struct {int n; float m; }td;


正确答案:C
解析:选项A)中typedef的作用是声明一个新的类型名AA代替已有的结构体类型名struetaa,然后用AA定义结构体类型变量td;选项B)直接用结构体类型名structaa定义结构体类型变量td;选项C)中的aa本身就为结构体变量名,所以不能再用它来定义结构体变量,该项错误;选项D)省去了结构体名,直接将td定义为结构体变量,正确。

第5题:

以下对结构体类型变量的定义中,不正确的是

A.typedef struct aa { int n; float m; }AA; AA tdl;

B.#define AA struct aa AA{ int n; float m; }tdl;

C.struct { int n; float m; }aa; struct aa tdl;

D.struct { int n; float m; }tdl;


正确答案:C
解析:定义结构体类型的变量有几种的方法如下:①定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型aa的同时定义了该类型的变量tdl。上述B)项中将宏名AA用宏体structaa替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名明是可以省略的,因此,D)项也是正确的。structaa{...}tdl;②先定义结构体类型,然后再定义结构体类型的变量,形式如下:structaa{…};structaatdl;这种定义形式也可演变为,先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA去定义一个变量(这时不再需要使用关键字struct了)。这就是A)项的形式。

第6题:

已知如下定义,则sizeof(a)的值是 struct{ int i; char c; double a;}a;

A.8

B.9

C.10

D.11


正确答案:D
解析:结构体在内存中是连续存放的,一个结构体类型的变量所占用的空间是其所有成员所占空间的总和。double类型所占的空间为8个字节。

第7题:

以下对结构体类型变量td的定义中,错误的是______。

A.typedef struct aa { int n; float m; }AA; AA td;

B.struct aa { int n; float m; }td; struct aa td;

C.struct { int n; float m; }aa;

D.struct { int n; float m; }td; struct aa td;


正确答案:C
解析: 本题的考点是C语言结构体的定义和自定义类型typedef。对于选项A,首先用typedef将结构体自定义为AA,再用AA定义结构体变量td是正确的。对于选项B首先定义结构体类型aa,再用struct aa定义结构体变量td也是正确的。选项D直接用无名结构体定义结构体变量td也是正确的。而选项C中,首先用无名结构体定义了结构体变量aa,再用结构体变量aa去定义结构体变量td是完全错误的。因此正确选项是C。

第8题:

以下对结构体类型变量的定义中,不正确的是______。

A.typedef struct aa { int n; float m; }AA; AA td1;

B.#define AA struct aa AA {int n; float m; }td1;

C.struct {int n; float m; }aa; srtuct aa td1:

D.struct {int n; float m; }tdl;


正确答案:C
解析:选项A是先定义一个结构体类型,然后再定义结构体变量。选项B是通过宏替换来定义结构变量的。选项D则是直接定义结构变量。

第9题:

以下对结构体类型变量td的定义中,错误的是

A.typedef struct aa { int n; float m; }AA; AA td;

B.stmct aa{ int n;float m;}td;stmct aa td;

C.struct { int n; float m; }aa; struct aa rd;

D.struct{ int n;float m;}td;


正确答案:C
解析:选项A使用typedef语句给结构体aa定义了—个新的名称AA,因此使用AA直接声明结构体变量td是正确的。选项B中,前面一句是定义结构体同时声明了结构体变量td,后一句是使用结构体名sa声明结构体变量td,都是正确的写法。选项C的第1条语句和选项D使用的是无名结构体直接声明变量的语法,是正确的,但是选项C的第2条语句使用已经声明的结构体变量aa来声明td是错误的.故应该选择C。

第10题:

【单选题】以下对结构体类型变量td的定义中,错误的是______。

A.typedefstruct aa {int n; float m; }AA; AAtd; struct aa td;

B.struct aa { int n; float m; }; struct aa td;

C.struct {int n; float m; }aa; struct aa td;

D.struct { int n; float m; v


C 解析:选项C中的aa本身就为结构体变量名,所以不能再用它来定义结构体变量,故此种定义方法是错误的。