嵌入式软件工程师笔试题1

1、写出运行结果:
 union V {
struct X {
  unsigned char s1:2;
  unsigned char s2:3;
  unsigned char s3:3;
 } x;
 unsigned char c;
    } v;
    v.c = 100;
    printf("%d", v.x.s3); 
}//3

 

2、Union{

Int a;

Struct {

Char b1;

Short b2;

Char b3;

}u;

}x;

x.a = 0x22334455,则x.u.b1,x.u.b2,x.u.b3的值分别是多少?//0x55,0x2233,0x随机值

 

3、简述结构体和共用体的区别。

1、结构体存在字节对齐,这样节省存储空间。

2、共用体共用一块内存空间。

3、结构体大小为:最后一个元数偏移首地址大小+自身类型大小+补齐后大小

4、共用体大小为:最大数据类型的大小。

 

4、 UCHAR *pucCharArray[10][10];

  typedef union unRec

  {

      ULONG   ulIndex; 

      USHORT usLevel[6]; 

      UCHAR  ucPos; 

  }REC_S;

  REC_S   stMax,*pstMax;

  四字节对齐方式时: sizeof(pucCharArray) = 4*100,

sizeof(stMax)=2*6, sizeof(pstMax)=4,sizeof(*pstMax)=2*6.

 

5、struct BBB

    {

       long     lNum;

       char     *pcName;

       short    sDate;

       char     cHa[2];

       short    sBa[6];     

    }*p;

    p = 0x100000;

    p + 0x1 = 0x100018

    (unsigned long)p + 0x1 = 0x100001

    (unsigned long *)p + 0x1 = 0x100004

    (char *)p + 0x1 = 0x100001

 

6、struct tagAAA     

{                                                

    unsigned char ucId:1;

    unsigned char ucPara0:2;

    unsigned char ucState:6;

    unsigned char ucTail:4;

    unsigned char ucAvail;

    unsigned char ucTail2:4;

    unsigned long ulData;

}AAA_S;/9/12

问:AAA_S在字节对齐分别为1、4的情况下,占用的空间大小是多少?

 

7、#pragma pack(4)/*编译选项,表示4字节对齐*/

int main(int argc, char* argv[])

{

    struct tagTest1

    {

        short a;

        char d;

        long b;   

        long c;   

    };

    struct tagTest2

    {

        long b;   

        short c;

        char d;

        long a;   

    };

    struct tagTest3

    {

        short c;

        long b;

        char d;    

        long a;   

    };

    struct tagTest1 stT1;

    struct tagTest2 stT2;

    struct tagTest3 stT3;

   

    printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3));

    return 0;

}12/12/16

#pragma pack()(编译选项结束)

请问输出结果是:_________

 

8、enum ENUM_A

    {

          X1=2,

          Y1,

          Z1 = 6,

          A1,

          B1   

    };

    enum ENUM_A enumA = Y1;

    enum ENUM_A enumB = B1;

请问 enumA = 3; enumB = 8;

 

9、struct tagABC

{                         

    char  cB;

    short sC;

    char  cD;

    long  lA;

}*pAbc;                         

pAb=0x100000;                

那么pAbc+0x100 = 0x100c00; (ULONG)pAbc + 0x100 = 0x100100;

(ULONG *)pAbc + 0x100 = 0x_100400;(char *)pAbc + 0x100 = 0x100100;

 

10、struct
{

short a;
char b;
float c;
}cs;
sizeof(cs)的值是
A.4
B.5
C.6
D.8

11、怎么在结构体中实现函数?

我们知道在c语言中,结构体中不能使用函数的,在c++中类可以使用函数,

要在c语言中使用函数,则需要使用回调函数(函数指针)void*p(int    int);

你可能感兴趣的:(嵌入式软件工程师笔试题1)