【C语言】错题本(2)

简介: 【C语言】错题本(2)

题目:


将题目代码粘贴在下面便于分析:

#define MAX_SIZE A+B
struct _Record_Struct
{
  unsigned char Env_Alarm_ID : 4;
  unsigned char Para1 : 2;
  unsigned char state;
  unsigned char avail : 1;
 
}*Env_Alarm_Record;
 
struct _Record_Struct *pointer = (struct _Record_Struct*)malloc(sizeof(struct _Record_Struct) * MAX_SIZE);


错误选型:B


正确选择:D


题目分析:



也即最后malloc(     ),括号中的表达式为(3*2+3),等于9个字节.


注意!宏在代码中替换表达式时就是原样替换,不会因为宏定义的整体就替换成带括号的表达式,就像本题,宏替换后的表达式为:


#define MAX_SIZE A+B
 
malloc(sizeof(struct _Record_Struct) * MAX_SIZE);
 
//宏替换后:
 
malloc(sizeof(struct _Record_Struct) * 2 + 3 );
 
//而不是:
 
malloc(sizeof(struct _Record_Struct) * (2 + 3) );
 


相关文章
|
6月前
|
C语言
【C语言】错题本(3)
【C语言】错题本(3)
34 0
|
6月前
|
C语言
【C语言】错题本(1)
【C语言】错题本(1)
52 0
|
存储 编译器 C语言
C语言错题之 10
C语言错题之 10
118 0
|
6月前
|
存储 C语言
【C语言】错题本(4)
【C语言】错题本(4)
36 0
|
存储 C语言
C语言错题之 8
C语言错题之 8
67 0
|
C语言
C语言错题之 5
C语言错题之 5
51 0
|
6月前
|
C语言
C语言:初阶测试错题(查漏补缺)
C语言:初阶测试错题(查漏补缺)
40 0
|
C语言
C语言分支语句和循环语句经典题及易错题
C语言分支语句和循环语句经典题及易错题
159 0
|
存储 编译器 开发工具
C语言错题之 7
C语言错题之 7
71 0
|
C语言
C语言错题之 6
C语言错题之 6
55 0