题目皆为不定项选择题,都选对为4分,选不全为2分,选错一个0分。
1、 对于 int *pa[5]; 的描述,正确的是()
A. pa是一个指向数组的指针,所指向的数组是5个int型元素
B. pa是一个指向某个数组第5个元素的指针,该元素是int型变量
C. pa[5]表示某个数组的第5个元素的值
D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:指针数组与数组指针
- 指针数组:是一个数组,数组中每个元素是一个指针
- 数组指针:是一个指针,指向一个具有n个元素的数组
这两个概念很容易混淆。其实只要记住优先级就好了:() > [ ] > *
- int *pa[5]:下标符号[ ] 和优先级大于*,所以这是一个数组,即指针数组。
- int (*pa)[5]:括号() 的优先级大于下标符号,所以先看括号内的内容,即指针*,所以这是一个指针,即数组指针。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
2、 IPV4中,数据报传播方式包括以下的()
A. 广播 B. 单播 C. 任播 D. 组播
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:广播、单播、组播
IPV4不支持任播(anycast),IPV6支持。
- 单播(unicast):点到点一对一通信。将数据包发送到某一主机
- 广播(broadcast):将数据包发送到局域网内所有主机
- 组播(multicast):又叫多播,传播范围介于单播和广播之间。将数据包发送到加入同一组的主机
--------------------------------------------------------------------------------------------------------------------------------------------------------------
3、 下面关于友元函数的描述中,正确的说法是()
A. 友元函数是独立于当前类的外部函数
B. 一个友元函数不可以同时定义为两个类的友元函数
C. 友元函数必须在类的外部进行定义
D. 在类的外部定义友元函数时必须加上friend关键字
--------------------------------------------------------------------------------------------------------------------------------------------------------------
关键词:友元
友元的出现其实是对面向对象编程思想的一种挑战,因为它破坏OO编程中信息封装的特性,使得一个外部函数可以操纵一个类的私有成员。这样做的好处大概是提高了编程的灵活性并精简了代码。不必像Java那样到处充斥getter和setter方法了。
- 友元函数并不是类的组成部分,但是它却可以在类内部直接定义,但其作用域并不仅限于类内部,而是和该类的作用域相同,即类外部(但不超出类的作用域的地方)也可见。
- 友元函数需要访问类的非static成员时,在声明时需要以该类的对象作为参数。
- 友元参数需要访问类的static成员时,在声明时不需要以该类的对象作为参数。
- friend只能用在类内部,在类外定义友元函数内容的时候,不能加friend关键字,否则报错。
- 友元不是类的组成部分,所以可以定义为多个类的友元(多次重载即可)。
#include <iostream>
using namespace std;
class A
{
public:
static int count;
friend void test(A a);
friend void test();
A(int a=1,int b=2):i(a),j(b){};
private:
int i,j;
};
int A::count = 0;
void test(A a)
{
cout<<a.i<<" "<<a.j<<endl;
}
void test(){
cout<<A::count<<endl;
};
int main()
{
A a;
test(a);
test();
}
// 打印结果
1 2