1.关于C++中的new和C语言中的malloc,以下说法哪几个是正确的:A
A 都是用来申请内存的
B 都是函数
C 都会调用构造函数
D 他们没有区别,都一样
解:
(1)malloc是库函数,而new是操作符
(2)编译器无权调用库函数来执行构造函数和析构,无法满足创造动态对象的要求,所以才有了new和delete
2.void类型没有分配内存,而引用必须是另一个固定内存变量的别名,所以不能指向void
3.关于 " 文件指针 " 概念
(1)文件指针是程序中用FILE定义的指针变量
(2)文件指针指向的是一块内存区域,这块区域存储着打开的文件的相关信息,包括文件读取指针当前位置、文件读取缓冲区大小等信息,并不是指向文件的
(3)fscanf是从文件中格式化读取,fprintf才是向文件中格式化写入
4.执行下面语句后的输出为 %%
int I=1;
if(I<=0)
printf("****\n") ;
else
printf("%%%%\n");
解:在printf中的%作为转义符,两个%才相当于1个%
5.vector是顺序存储的,只有在尾部插入才不会导致迭代器失效,在头部插入或者中间插入都会导致插入的部位以及其后的所有迭代器都失效;
map是映射,key和value是一一对应的,在内存中是零散存在的,迭代器通过key找到value,无论怎么插入都不会让迭代器失效,当然删除只会使得被删除元素的迭代器失效
6.缺省情况下,编译器默认数据为signed类型,但是char类型除外