【集锦】3

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41035588/article/details/83217376

const和#define的比较

①const具有数据类型,#define没有数据类型 ②个别编译器中const可以进行调试,#define不可以进行调试 ③在类中定义变量有两种方式:在类中声明常量,但不赋值,在构造函数初始化表中进行赋值;用枚举代替const变量。

C++函数中值的传递方式有哪几种?

①值传递 ②指针传递 ③引用传递

值传递:把实参的值复制给形参,对形参的修改并不会修改实参的值。从函数角度来说:函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的位置。

指针传递:是传值的一种特殊形式,只是它传递的是地址,实参和形参将会指向同一个对象。从函数角度来说:压栈的是指针变量的副本,当你对指针解引用时,其值是指向原来的那个变量,所以可以对原来变量进行操作。

引用传递:真正的以地址的方式传递参数,传递以后,形参和实参指向同一个对象,只是名字不同,对形参的修改将影响实参的值。从函数角度来说:压栈的是引用的副本,由于引用是指向某一个变量的,对引用的操作其实就是对它所指向的变量的操作。作用同指针传递一样。

void Fun(int c); //传值调用,会产生临时变量
void Fun(char *str);//指针传递
void Fun(char& str);//引用传递

如何在C++代码中对某句代码进行C代码的编译?

使用extern “C”:它是C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数。这是因为C++编译后库中函数名会变得很长,与C生成的不一致,造成C++不能直接调用C函数,加上extren "C"后,C++就能直接调用C函数了。extern “C”主要使用正规DLL函数的引用和导出和在C++包含C函数或C头文件时使用。

交换机和路由器分别实现的原理是什么?分别在哪个层次上面实现?

交换机用于局域网,利用主机的 MAC 地址进行数据传输,而不需要关心 IP 数据包中的 IP 地址,它工作于数据链路层。路由器识别网络是通过 IP 数据包中 IP 地址的网络号进行的,所以为了保证数据包路由的正确性,每个网络都必须有一个唯一的网络号。路由器通过 IP 数据包的 IP 地址进行路由的(将数据包递交给哪个下一跳路由器)。路由器工作于网络层。由于设备现在的发展,现在很多设备既具有交换又具有路由功能,两者的界限越来越模糊。

#include<filename.h>与#include"filename.h"有什么区别?

前者编译器从标准库路径进行搜索filename.h,后者编译器从用户的工作目录进行搜索filename.h。

ARP是地址解析协议,简单阐述工作原理?

( 1 )首先,每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。

( 2 )当源主机要发送数据时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 数据包,该数据包包括的内容有:源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址。

( 3 )当本网络的所有主机收到该 ARP 数据包时,首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖,然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。

( 4 )源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

猜你喜欢

转载自blog.csdn.net/qq_41035588/article/details/83217376