内存空间被分成不同区域,其中用函数
void* malloc(unsigned int size);
申请的内存在()
正确答案: C 你的答案: C (正确)
程序区
静态存储区
动态存储区
ROM区
stack由系统自动分配,heap需要程序员自己申请,C中用函数malloc分配空间,用free释放,C++用new分配,用delete释放。
当然热爱java的童鞋肯定更关心java的内存空间划分(虽然强大的java让程序猿在编程时不需要考虑太多内存方面的细节)
java 对内存空间的划分五部分;
栈、堆、方法区、本地方法区、寄存器。
1、栈内存:存储都是局部变量。只要是在方法中定义的变量都是局部变量。
一旦变量的生命周期结束该变量就被释放。
2、堆内存都是实体(对象)(new 关键词创建的)
每一个实体都有一个首地址值。
堆内存的变量都有默认的初始化值。不同类型不一样,
int——0,double——0.0 boolean——false char——’\u0000’
当实体不在使用时,就会被垃圾回收机制处理。
若有以下定义和语句:
1 | int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; |
则不能表示a数组元素的表达式是
正确答案: B 你的答案: B (正确)
*p
a[10]
*a
a[p-a]
答案:B
解析:
A:相当于a[0]
B:以为数组的下标从0开始,所以10越界。
C:相当于a[0]
D:p和a指向同一个数组,可以做加减法(如果p和a不是指向同一数组则会出错),得到的值为整数。此题为0。所以D也相当于a[0]。
下列关于联合的描述中,错误的是?
正确答案: A 你的答案: C (错误)
联合变量定义时不可初始化
联合的成员是共址的
联合的成员在某一个时刻只有当前的是有效的
联合变量占有的内存空间是该联合变量中占有最大内存空间的成员在内存对齐时所需的存储空间
union类型的变量在定义时是可以被初始化的,定义如下union类型
1 2 3 4 5 6 | union Test { inta; floatb; }; Test test = {1}; |
test变量的定义可以初始化,初始值的类型必须是union中第一个成员的类型。
以下程序运行时输入:123456789↙
则程序运行结果是()?
1 2 3 4 5 6 7 8 9 | #include <stdio.h> main() { int x, y; scanf("%2d%*4s%2d", &x, &y); printf("%d", y-x); } |
%2d先读取前两个字符 %*4s跳过4个字符 %2d读取两个字符 所以x为12 y为78 y-x=66
假设A为抽象类,下列声明( )是正确的。
正确答案: D 你的答案: B (错误)
int fun(A);
A Obj;
A fun(int);
A *p;
抽象类不能初始化,不能当做返回值,不能当做参数,可以作为指针变量,因为此时还没有初始化
使用操作符setw() 对数据进行格式输出时,应包含( )文件。
正确答案: D 你的答案: C (错误)
fstream.h
stdlib.h
iostream.h
iomanip.h
关于格式化输入与输出,标准库定义了一组操纵符(manipulator)来修改流的格式状态。(可参见《C++ Primer》 P666 ”格式化输入与输出“)
这些操纵符(如setprecision以及其他接受参数的操纵符)都定义在头文件 iomanip 中。(《C++ Primer》 P669)
(可根据IO库中操纵符的英文书写manipulator来记住该头文件名称:iomanip.h)