1、B
strlen 测量的是字符的实际长度,以'\0' 结束(不包含'\0' )。而sizeof 测量的是字符的分配大小,如果未分配大小,则遇到'\0' 结束(包含'\0' ,也就是strlen测量的长度加1),如果已经分配内存大小,返回的就是分配的内存大小。
2、
class Base {
public:
Base() {
cout << "Base 的构造函数 " << endl;
}
~Base() {
cout << "Base 的析构函数 " << endl;
}
};
class son :public Base {
public:
son() {
cout << "son 的构造函数 " << endl;
}
~son() {
cout << "son 的析构函数 " << endl;
}
};
void main() {
son *p = new(son);
delete p;
system("pause");
return ;
}
3、回到函数
什么是回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。
2,为什么要用回调函数
因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。
回调机制包括两部分:服务执行者和服务方式制定者。
a) 服务执行者先制定服务规范;
b) 服务方式制定者然后按照规范制定服务方式;
c) 然后执行者按照这个方式提供服务。
1 回调函数是由开发者按照一定的原型进行定义的函数。
2 回调函数并不由发者直接调用执行。
3 回调函数通常作为参数传递给系统API,由该API来调用。
4 回调函数可能被系统API调用一次,也可能被循环调用多次。
4、因为 || 运算前面符合后面不再计算,提前终止,答案42
void main() {
int x = 40;
if (x == 40 || ++x == 41) x++;
x++;
cout << x << endl;
system("pause");
return ;
}
5、以下多线程对int型变量x的操作,哪几个不需要进行同步( )
A.x=y;
B.x++;
C.++x;
D.x=1;
A.由于y的值不确定,所以要加锁;
B,C 两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常;
D 原子操作,所以不需要加锁
原子性:指该操作不能再继续划分为更小的操作。
6、
osi参考模型分为哪几层?各层的功能是什么? (baidu.com)
7、animal
class Animal {
public:
void speak() {
cout << "animal" << endl;
}
};
class Dog :public Animal {
public:
void speak() {
cout << "dog" << endl;
}
};
class Cat :public Animal {
public:
void speak() {
cout << "cat" << endl;
}
};
void main() {
Animal *dog = new(Dog);
dog->speak();
system("pause");
return ;
}
8、用以太网形式构成的局域网,其拓扑结构是什么-百度经验 (baidu.com)
9、12344321
void grow(int n) {
cout << n << endl;
if (n < 4) grow(n + 1);
cout << n << endl;
}
10、3
void main() {
int x = 11;
cout << x++ * 1/3 << endl;
system("pause");
return ;
}
11、c++中判断重载方法的依据是什么
c++中判断重载方法的依据是什么-C#.Net教程-PHP中文网
12、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。
A.MyClass(MyClass x);B.MyClass(MyClass&x);C.MyClass(&x);D.MvClass(x);
拷贝构造函数也是构造函数,所以函数名字为MyClass,但它只有一个参数,这个参数是本类的对象,即x;而且采用对象的引用的形式,也就是&x。所以本题答案是B) 。
13、已知序列 25, 13,10, 12, 9 是大根堆,在序列尾部插入新元素 18, 将其再调整为大根堆,调整过程中元素之间进行的比较次数是( )。
A. 1 B. 2 C. 4 D. 5
[解析] 对堆插入或删除一个元素,有可能不满足堆的性质,堆被破坏, 需要调整为新堆。
( 1)为原堆,
( 2)为插入 18 后,
(3)比较 10与 18,交换后,
(4)比较 25与 18,不交换,即为调整后的新的大根堆。 因此调整过程中元素之间进行的比较次数为 2。
14、 8
int fun(int n) {
static int i = 1;
if (n > 5) {
return n;
}
n = n + i;
i++;
return fun(n);
}
void main() {
cout << fun(2) <<endl;;
system("pause");
return ;
}