码迷,mamicode.com
首页 > 编程语言 > 详细

面试准备之C/C++基础知识

时间:2019-06-23 15:37:47      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:tcp传输   清零   术语   swap   wap   效率   实时   mem   行操作   

1.值传递、地址传递和引用传递

(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

称作常量指针,以*作为分割边界,const在左,则表示指针所指数据是常量。

*p是常量,不能将*p作为左值进行操作,

(2)int * const p

称作指针常量,表示该指针本身是常量,

p是常量。

4.C里内存的五个分区

(1)栈

需要的时候分配,不需要的时候自动清除的变量储存区,存放局部变量和函数

(2)堆

new分配的内存块,和delete相对应

(3)自由储存区

malloc分配的内存区,和堆很相似

(4)全局/静态变量储存区

全局和静态变量储存区

(5)常量储存区

常量储存区

这里重点区别一下堆和自由储存区,自由存储是C++中通过new与delete动态分配和释放对象的抽象概念,而堆是C语言和操作系统的术语,是操作系统维护的一块动态分配内存。

5.C++中类里static成员变量与普通的成员变量有什么不同?静态函数呢? 

(1)成员变量

static成员变量无论你创建多少个对象就只有唯一的变量,只分配一次地址。
普通成员变量你创建一个对象就有一个副本。

(2)函数

属于类不属于对象。

不用定义对象可以调用,但是只能调用静态成员。

静态的成员函数不能访问类中的非静态成员。

6. TCP跟UDP的区别

(1)连接

TCP连接,三次握手,

UDP不用连接,用于广播,

(2)安全

TCP数据可靠安全

UDP不保证可靠

(3)传输效率

TCP传输效率相对较低。

UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。

(4)连接对象数量

TCP连接只能是点到点、一对一的。

UDP支持一对一,一对多,多对一和多对多的交互通信。

 7.函数memcpy 、memset的实现,手撕代码

操作的都是字节,这一点很重要

(1)memcpy

memcpy用于资源内存(src指向的内存)拷贝到目标内存(desc指向的内存)

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

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;
}

未完待续。。。

面试准备之C/C++基础知识

标签:tcp传输   清零   术语   swap   wap   效率   实时   mem   行操作   

原文地址:https://www.cnblogs.com/jxLuTech/p/11072765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!