1.以下关于枚举的说法,哪个是正确的?
A.枚举类型可以具有浮点数作为枚举值。
B.枚举类型在内存中存储为整数。
C.枚举类型可以包含字符串作为枚举值。
D.枚举类型不能作为函数的参数传递。
B
2.下面代码的结果是:( )
enum ENUM_A
{X1,Y1,Z1 = 255,A1,B1,
};
enum ENUM_A enumA = Y1;
enum ENUM_A enumB = B1;
printf("%d %d\n", enumA, enumB);
A.1, 4
B.1, 257
C.2, 257
D.2, 5
枚举默认从0开始,所以X1是0,故Y1是1,给了数字后会根据数字向后推,那么Z1是255,A1是256,所以B1是257,故选B。
3.关于枚举常量和#define 定义常量,下面哪个表述是不严谨的?
A.可读性更好:枚举符号提供了有意义的标识符,可以更清晰地表达代码的意图。相比之下,#define定义的符号只是简单的文本替换,不具备语义上的含义。
B.和#define定义的标识符比较枚举有类型检查,更加严谨。
C.枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用,#define定义的符号没有作用域概念,会在整个代码中进行文本替换
D.#define没有类型检查,使用更加方便,更加推荐使用
A:正确
B:正确
C:正确
D:枚举是一种类型,有类型检查,但是#define定义的符号没有类型检查,就是简单的替换,使用虽然方便,但是也很容易导致问题,所以更加推荐使用枚举常量。
4.关于动态内存函数的说法错误的是:( )
A.malloc函数向内存申请一块连续的空间,并返回起始地址
B.malloc申请空间失败,返回NULL指针
C.malloc可以向内存申请0字节的空间
D.malloc申请的内存空间,不进行释放也不会对程序有影响
说明:不释放会产生内存泄漏,小型程序可以不关注,但是在中大型程序上影响极其深刻。故选D。AB是函数的基本功能,C选项比较特殊,malloc(0)是允许的,也会返回一个指针,只是没有空间所以不可使用而已。
5.关于动态内存相关函数说法错误的是:( )
A.malloc函数和calloc函数的功能是相似的,都是申请一块连续的空间。
B.malloc函数申请的空间不初始化,calloc函数申请的空间会被初始化为0
C.realloc函数可以调整动态申请内存的大小,可大可小
D.free函数不可以释放realloc调整后的空间
realloc在操作过程中是释放旧空间分配并返回新空间,所以返回的新空间也是需要释放的,故选D。AB是malloc和calloc的区别。C是realloc的基础功能。
6.动态申请的内存在内存的那个区域?( )
A.栈区
B.堆区
C.静态区
D.文字常量区
动态内存分配都是在堆上分配的。