C++必知必会复习(十一)

1、写一个数组指针和指针数组;写一个函数指针和指针函数。

(1)数组指针:int (*p)[4];是一个指针,指向有4个整型元素的数组

(2)指针数组:int *p[4];是个有4个元素数组,每个元素是指向整型的指针

(3)函数指针:int *func(void);

(4)指针函数:int (*)func(void);

规则:(右左规则)首先从在最里面的括号标识符看起,然后往右看,再往左看。每当遇到圆括号,调转阅读方向。

2、中断时CPU在做什么?

当中断时,CPU暂停当前任务,做相应的处理,CPU需要判断中断源,保存现场(即寄存器值),以便恢复后执行。

过程 :

中断模式——保存当前PC,敏感数据入载——PC被赋值,中断起始位置——CPU跳到中断起始地址,处理中断——返回——恢复PC,数据出栈


3、合并两个链表,合并链表有序

struct ListNode

{

   int m_nValue;

   ListNode *m_pNext;

}

(1)1——2——3——4

(2)5——6——6——7——8

(3)1——2——3——4——5——6——7——8

思路:比较头节点的方式合并排序

代码:

ListNode *Merge(ListNode *pHead1, ListNode *pHead2)

{

    if(pHead1 == nullPtr)

       return pHead2;

    else if(pHead2 == nullPtr)

      return pHead1;

   ListNode *pMergeHead = nullPtr;

   if(pHead1->m_nValue < pHead2->m_nValue)

   {

       pMergeHead = pHead1;

       pMergeHead->m_pNext = merge(pHead1->m_pNext, pHead2);

   }

   else

   {

       pMergeHead = pHead2;

       pMergeHead->m_pNext = merge(pHead1, pHead2->m_pNext);

   }

   return pMergeHead;

}


4、C++中的static和const分别作用是什么?

static:

(1)静态成员变量不能再类内部初始化,只是声明,定义必须在类外

(2)类的静态成员函数,静态成员变量是和类相关的,而不是和类的具体对象相关。作用域仅在本文件中。

(3)static没有this指针

(4)不能为virtual

const:

(1)不能在类定义初始化,只能通过构造函数初始化

(2)主要防止成员函数修改对象的内容,不能改变成员变量值,但可以访问成员变量


5、C++数据共享的方法?全局变量和类的静态变量名各有什么优缺点?

(1)C++数据共享的方法:

            1 >通过参数传递和返回值

            2 >通过传递指针或者引用

            3 >通过全局变量实现

            4 >类相关的共享(类数据成员,类静态成员,友元函数)

(2)全局变量和类的静态成员变量各有什么特点?

全局变量作用域是整个项目,其优缺点如下:

优点:

             1 >全局可视,任何一个函数都可访问和更改变量值

             2 >内存地址固定,读写效率高

缺点:

             1 >使用全局对象的函数依赖于全局对象的存在和类型,这使得在不同于上下文环境中重用该函数更加困难。

             2 >如果程序必须被修改,则全局依赖增加了引入错误的可能性,而且即使只对局部做修改也要求程序员必须解释整个程序。

             3 >如果全局对象得到一个不正确的值,则必须查找整个程序,以判断错误发生的位置。

             4 >当一个函数使用全局对象时,递归更加难以正确完成,递归在程序调用自身时才发生。

             5 >在线程存在的情况下,我们必须做特殊的编码,以便同步各个线程对于全局对象的读和写操作。

(3)静态成员:

优点:

             1 >静态类能够使您的实现简单,迅速,因为不必创建对象就能调用其他方法

缺点:

              1 >如果创建了该类的任何实例,不能使用实例来访问静态成员。只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件。


6、TCP的拥塞方法:

慢启动、拥塞避免、快速重传、快速恢复


7、LInux创建线程和创建线程函数:

fork创建线程;PTHread_Create创建线程


8、数据库索引有什么作用?

可以利用索引快速访问数据库表中的特定信息。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值