面试准备之C/C++基础知识
2020-12-13 03:17
标签:tcp传输 清零 术语 swap wap 效率 实时 mem 行操作 仅传递参数的值,函数内操作的是形参,不对实参进行操作, 函数声明: 地址传递,传递的是地址,函数内部的操作会改变实参。 函数声明: 函数调用: 引用是变量的别名,传递的是地址,函数内部的操作会改变实参。 函数声明: 函数调用: 引用是对象的别名,不能为空,定义一个引用的时候,必须初始化 引用是不能改变的指针,更安全, 称作常量指针,以*作为分割边界,const在左,则表示指针所指数据是常量。 *p是常量,不能将*p作为左值进行操作, 称作指针常量,表示该指针本身是常量, p是常量。 需要的时候分配,不需要的时候自动清除的变量储存区,存放局部变量和函数 new分配的内存块,和delete相对应 malloc分配的内存区,和堆很相似 全局和静态变量储存区 常量储存区 static成员变量无论你创建多少个对象就只有唯一的变量,只分配一次地址。 属于类不属于对象。 不用定义对象可以调用,但是只能调用静态成员。 静态的成员函数不能访问类中的非静态成员。 TCP连接,三次握手, UDP不用连接,用于广播, TCP数据可靠安全 UDP不保证可靠 TCP传输效率相对较低。 UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。 TCP连接只能是点到点、一对一的。 UDP支持一对一,一对多,多对一和多对多的交互通信。 操作的都是字节,这一点很重要 memcpy用于资源内存(src指向的内存)拷贝到目标内存(desc指向的内存) memset都是字节操作,这是重点,它是对较大的结构体或数组进行清零操作的一种最快方法. 未完待续。。。 面试准备之C/C++基础知识 标签:tcp传输 清零 术语 swap wap 效率 实时 mem 行操作 原文地址:https://www.cnblogs.com/jxLuTech/p/11072765.html1.值传递、地址传递和引用传递
(1)值传递
void swap(int px,int py)
{
int tmp = px;
px = py;
py = tmp;
}
函数调用:
int a,b;
swap(a,b);
(2)地址传递
void swap(int *px,int *py)
{
int tmp = *px;
* px =* py;
*py = tmp;
}
int a,b;
swap2(&a, &b);
(3)引用传递
void swap(int px,int py)
{
int tmp = px;
px = py;
py = tmp;
}
int a,b;
swap2(a, b);
2.指针和引用
3.const int *p和int * const p的区别
(1)const int *p
(2)int * const p
4.C里内存的五个分区
(1)栈
(2)堆
(3)自由储存区
(4)全局/静态变量储存区
(5)常量储存区
这里重点区别一下堆和自由储存区,自由存储是C++中通过new与delete动态分配和释放对象的抽象概念,而堆是C语言和操作系统的术语,是操作系统维护的一块动态分配内存。
5.C++中类里static成员变量与普通的成员变量有什么不同?静态函数呢?
(1)成员变量
普通成员变量你创建一个对象就有一个副本。(2)函数
6. TCP跟UDP的区别
(1)连接
(2)安全
(3)传输效率
(4)连接对象数量
7.函数memcpy 、memset的实现,手撕代码
(1)memcpy
void *Mem_copy(void *dst,const void *src, int n)
{
if (dst == NULL || src == NULL || n 1)
return NULL;
char *Dst = (char *)dst;
char *Src = (char *)src;
while (n > 0)
{
*Dst++ = *Src++;
n--;
}
return dst;
}
(2)memset
void *Mem_set(void *dst, int val, int n)
{
if (dst == NULL || n 1)
return NULL;
char *Dst = (char *)dst;
while (n > 0)
{
*Dst++ = val;
n--;
}
return dst;
}