1、对于以下代码:
char *p=new char[100]
p在栈上 new出来的在堆上
动态分配在堆中,其他的内存分配都在栈上进行。
2、static char a[2]={‘1’,‘2’,‘3’};说法是都正确?
错误 数组越界
3、在C语言的定义和调用中,函数的定义不可以嵌套,但函数的调用可以嵌套。
4、以下程序输出结果是9,10
main()
{int i=010,j=10;
printf("%d,%d\n",++i.j--);
}
C/C++规定,一个数如果要采用八进制,必须它前面加上一个0。i=010八进制,转换成十进制得到:8^1*1=8
5、
int func(int a)
{
int b;
seitch (a)
{
case 1: b=30;
case 2: b=20;
case 3: b=16;
default: b=0;
}
return b;
}
则func(1)=0
case里没有break 会一直运行到default。
6、不能作为重载函数的调用的依据是函数类型。
函数重载:函数名称必须是相同的,参数列表是不同的,包括参数类型,参数顺序,参数个数,这三个任意一个不同都构成重载而且函数重载跟函数的返回值类型是没有关系的。所以判断函数是不是重载的标志就是函数名相同,函数的参数不同。
函数重写:函数重写与重载不同,重写发生于有继承关系的子类和父类之间,而且重写是是重写函数的方法体,所以重写时子类函数的方法签名(函数的名称,函数的参数个数,参数顺序)是与父类保持一致的,而且函数的返回值类型也保持与父类一致。
7、运行下列代码输出17,72
#include <stdio.h>
int main(void){
int q=0;
int i=1;
for(; ;i++)
{
if(q>60) break;
if(i%2==0)
q+=i;
}
printf("%d,%d",i.q.);
return 0;
}
8、二进制数据文件流fdat读指针移到文件头的语句是fdat.seekg( 0, ios::beg);
对输入流操作:seekg()与tellg() 对输出流操作:seekp()与tellp() seekg()是对输入文件定位,它有两个参数:第一个参数是偏移量,第二个参数是基地址。 对于第一个参数,可以是正负数值,正的表示向后偏移,负的表示向前偏移。而第二个参数可以是: ios::beg:表示输入流的开始位置 ios::cur:表示输入流的当前位置 ios::end:表示输入流的结束位置 tellg()函数不需要带参数,它返回当前定位指针的位置,也代表着输入流的大小。
9、派生类对象可以访问基类成员中的(D)
A 公有继承的私有成员
B 私有继承的公有成员
C 公有继承的保护成员
D以上都错
题目是派生类对象
基类成员在派生类的访问属性取决于继承方式以及这些成员本来在基类中的访问属性
(1)基类的私有成员无论什么继承方式,在派生类中均不可以直接访问
(2)在公有继承下,基类的保护成员和公有成员均保持原访问属性
(3)在保护继承方式下,基类的保护和公有成员在派生类的访问属性均为保护属性
(4)在私有继承下,基类的保护和公有成员在派生类中的访问属性均为私有属性
对于此题:
(1)公有继承的私有成员不被继承,所以不能访问
(2)私有继承的公有成员可以被类的方法访问,不能被对象访问,属于私有属性
(3)公有继承的保护成员具有保护属性,只能被类的方法访问,不能被对象访问
10、有以下表达式:
int a=248,b=4;
int const c=21;
const int *d=&a;
int *const e=&b;
int const *const f=&a;
请问下列表达式哪些会被编译器禁止?
A *c=32
B *d=43
C e=&a
D f=0x321f
E d=&b
F *e=34