2021.4.17牛客刷题小结


前言

每天的刷题总结,以下内容仅供参考。


C++

1、转义符

转义字符以\开始,如果是 \x (注意是小写,C语言是区分大小写的)开头,后面接16进制数,如果以 \ 开头,后面接8进制数
转移字符表示的数据范围有限,因此对 \x 开头的 ,只能是 \x xx(后面两位表数据)这种格式的,意思是只能接两位数据,最大值为\x7f
对 \ 开头的,后面可以接三位数据,即\xxx(后三位均为数),最大值为\177

另外,还有其他几个常见的转义字符:\t ,\n,\a,\b,\r,\f,\v

\x + 16进制 最大只能接两位数据。最大值为 \x7f。
\ + 8进制 最大可以接三位数据。 最大值为 \177。
几个常见的转义符:\t \n \a \b \r \f \v

2、函数参数为基类对象

#include<iostream>
using namespace std;
class B0//基类BO声明
{
public://外部接口
virtual void display()//虚成员函数
{
    cout<<"B0::display0"<<endl;}
};
class B1:public B0//公有派生
{
public:
    void display() { cout<<"B1::display0"<<endl; }
};
class D1: public B1//公有派生
{
public:
    void display(){ cout<<"D1::display0"<<endl; }
};
void fun(B0 ptr)//普通函数
{
    ptr.display();
}

这里使用的不是按地址传递,这样会转化为基类对象,直接调用基类的成员函数,如果是为了实现多态,可以改为指针传递

void fun(B0 *ptr)//普通函数
{
    ptr.display();
}

3、拷贝构造

拷贝构造函数从来不显示调用,而是由编译器隐式地调用:

(1) 用类的一个对象去初始化另一个对象时;

(2) 当函数的形参是类的对象时(也就是值传递时),如果是引用传递则不会调用;

(3) 当函数的返回值是类的对象或引用时。

4、宏定义表达式


#define MAX(a, b) ((a) > (b) ? a : b )
int main()
{
    int a = 5, b = 0;
    int c = MAX(++a, b);
    int d = MAX(++a, b + 10);
    printf("%d %d %d %d\n", a, b, c, d);
    return 0;
}

输出结果为 8 0 7 10
注意:MAX(a, b)((a) > (b) ? a : b )
MAX(++a, b) ((++a) > b? ++a : b)
比较的时候执行了一次++a,返回的时候又执行了一次++a。

第一个MAX中,++a更大,所以++a执行两次。
第二个MAX中,++a更小,所以++a只执行了一次。
所以最终a = 5+1+1+1 = 8
b = 0。没有变过。
c = 5 + 1 + 1 = 7。
d = 10。

操作系统

1、虚拟地址空间

若处理器有32位地址,则它的虚拟地址空间为()字节?

地址长度正好是操作系统的内存位数,所以可以知道最大寻址为2的32次方b
2的10次方 == 1KB
2的20次方 == 1M
2的30次方 == 1G
2的40次方 == 1T

2、线程调度

由于用户线程不依赖于操作系统内核,因此,操作系统内核是不知道用户线程的存在的用户线程是由用户来管理和调度的,用户利用线程库提供的API来创建、同步、调度和管理线程。所以,用户线程的调度在用户程序内部进行,通常采用非抢先式和更简单的规则,也无须用户态和核心态切换,所以速度很快。
由于操作系统不知道用户线程的存在,所以,操作系统把CPU的时间片分配给用户进程,再由用户进程的管理器将时间分配给用户线程。那么,用户进程能得到的时间片即为所有用户线程共享。

总结:系统分配时间片给用户进程,用户进程自己分配时间给线程。


总结

今天c++正确率变高了,加上一些操作系统的题一起做。
继续加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值