若有下面的说明和定义: struct test { int m1; char m2; float m3; union uu {char u1[5]; int u2[2];}ua; }myaa; 则sizeof(stmct test)的值是( )。A.12B.16C.14D.9

题目

若有下面的说明和定义: struct test { int m1; char m2; float m3; union uu {char u1[5]; int u2[2];}ua; }myaa; 则sizeof(stmct test)的值是( )。

A.12

B.16

C.14

D.9

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

已知有变量datal定义如下: union data { int i; char ch; float f; }datal; 则变量datal所占的内存存储空间可表示为(57)。

A.sizeof(int)

B.sizeof(char)

C.sizeof(float)

D.SiZCOf(mt)+sizeof(char)+sizeof(float)


正确答案:C
解析:本题考查C语言编程的基本知识。本题变量datal定义为联合结构。联合中所有数据项占有相同的内存空间。联合体所占的内存存储空间为所包含数据项所占的内存存储空间的最大值。

第2题:

已知: union { int i; char c; float a; }st;则sizeof(st)的值是______。

A.4

B.5

C.6

D.7


正确答案:A

第3题:

若有下面说明和定义:struct test{ int m1;char m2;float m3;union uu(char u1[5];int u2[2];)ua;}myaa; 则sizeof(struct test)的值是( )。A)20 B)16C)14 D)9


正确答案:A
sizeof求在存储单元中所占字节数。

第4题:

若有如下说明和定义struct test{ int ml; char m2; float m3; union uu {char ul[5]; int u2[2];} ua;} myaa;则sizeof(struct test)的值是A.12 B.16 C.14 D.9


正确答案:A
在本题中,首先定义了一个结构体。在该结构体中,定义了一个整型变量成员、一个字符型变量成员和一个浮点型变量成员,并在结构体中定义了一个联合体变量成员,联合体变量成员中又包含两个联合体成员数组。题目最后要求计算该结构体变量所占的存储空间。
在C语言中,联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中最长的长度,因此,本题的联合体部分所占的长度为5,但是结构体与联合体不一样的是,结构体不能共享空间,一个结构体变量的总长度是各成员长度之和,因此,该结构体所需的存储空间为5+1+2+4=12。本题的正确答案选A。

第5题:

若有下面的说明和定义

struct test

{ int ml; char m2; float m3;

union uu {char ul[5]; int u2[2];} ua;

} myaa;

则sizeof(struct test )的值是

A.12

B.16

C.14

D.9


正确答案:A

第6题:

若有下列说明和语句,已知int型数据占2个字节,则下列语句的输出结果是( )。

stmct st

{ char a[15];

int b;

double c;

};

printf("%d",sizeof(struct st));

A.15

B.8

C.25

D.2


正确答案:C
解析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。题中int b占2个字节,char a[15]占15个字节,double c占8个字节,所以共25个字节。

第7题:

● 已知有变量 data1 定义如下:

union data

{ int i;

char ch;

float f;

} data1;

则变量 data1 所占的内存存储空间可表示为 (57) 。

(57)

A. sizeof(int)

B. sizeof(char)

C. sizeof(float)

D. sizeof(int)+sizeof(char)+sizeof(float)


正确答案:C


第8题:

已知程序中已经定义了函数test,其原型是int test(int,int,int);,则下列重载形式中正确的是

A.char test (int,int,int);

B.double test(int,int,double);

C.int test(int,int,int=O);

D.float test(int,int,float=3.5F);


正确答案:B
解析:本题考核函数重载。所谓函数重载,是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数仲,这些函数的名字相同,但是函数的参数的类型不同。这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。不可以根据函数返回值类型来重载函数。A选项中定义只是函数的返回类型不同,不符合重载的条件,C选项也不符合。对于D选项,形参列表中带有默认参数,如果原型的最后一个也带有默认参数,则会造成不知道该调用哪个函数的错误。

第9题:

设有以下说明和定义:

typedef union {long i; int k[5]; char c;} DATE;

struct data { int cat; DATE cow; double dog;} too;

DATE max;

则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:___52____


正确答案:
答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20
data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.
所以结果是 20 + 32 = 52.
当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

第10题:

若有下面的说明和定义,则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个字节。

更多相关问题