7-25日牛客网刷题 未知点、错题 集合

1.在C++11标准的语法中,auto被定义为自动推断变量的类型。

例如:

auto x=5.2; //这里的x被auto推断为double类型

 

2.注意点:

C语言中最简单的数据类型包括:整型、实型、字符型

实型,也称浮点型

C语言中布尔型是使用0,1表示,不存在布尔类型

另外一个可恼的是C语言不存在string类型,是char数组,\0结束

 

3.

c++中,声明const int i,是在哪个阶段做到 i只可读的?

编译

解析:

在c++中 const修饰的变量是常量,分配在全局区的常量区,

而我们的全局区代码区 编译完 就已经确定

只有栈区堆区才是运行分配的。 

 

4.

错题:

 

unsigned int k = 20;

while (k >= 0)

--k;

 

死循环

解析:

k是无符号整数,永远都>=0

 

5.

枚举类型

枚举类型,指一个被命名的整型常数集合(int型)

把枚举类型名看做是一个命名空间,命名空间内部的成员变量的使用相当于类成员使用规则

即类定义   class A{int a; float b;};

枚举类型定义:  enum a{x,y=8,z};  

枚举类型共享存储空间,即sizeof(a) = 4

第一个值未赋值,则默认为0,后面一个值未赋值默认为前一个值加1

则上述定义中,  a::x的值是0   a::y的值是8,   a::z的值是9

 

union数据类型的大小计算方法是

union的长度取决于其中的长度最大的那个成员变量的长度

即union中成员变量是重叠摆放的,其开始地址相同

其实union(共用体)的各个成员是以同一个地址开始存放的,每一个时刻只可以存储一个成员,这样就要求它在分配内存单元时候要满足两点:   
  1.一般而言,共用体类型实际占用存储空间为其最长的成员所占的存储空间;   
  2.若是该最长的存储空间对其他成员的元类型(如果是数组,取其类型的数据长度,例int   a[5]为4)不满足整除关系,该最大空间自动延伸; 

 

结构体的总大小为结构体最宽基本类型成员大小的整数倍

 

6.

有关main函数,

void main()

{

 cout<<1<<endl;

main();

}

会一直输出1,递归调用直至栈溢出

所以用户可以调用main()函数

 

7.


下列情况中,不会调用拷贝构造函数的是(B)

A:用一个对象去初始化同一个类的另一个新对象时

B:将类的一个对象赋值给该类的另一个对象时

C:函数的形参对象,调用函数进行形参和实参结合时

D:函数的返回值是类的对象,函数执行返回调用时

解析:

 class Base{};
Base w1;     //构造函数
Base w2(w1);   //拷贝构造函数
w1 = w2;     //赋值运算符
Base w3 = w1; //拷贝构造函数 

 

8.

main()

{   int  a[3][2]={0},(*ptr)[2],i,j;

    for(i=0;i<2;i++)

    {   ptr=a+i;

        scanf("%d",ptr);

        ptr++;//ptr++第三次的时候无法进行 因为ptr是指针数组 大小只有2

    }

    for(i=0;i<3;i++)

    {

        for(j=0;j<2;j++)

           printf("%2d",a[i][j]);

        printf("\n");

    }

}

运行时输入:1  2  3<回车>,则输出结果为:

1 0

2 0

0 0

 

9.

注意:

C程序实现的算法可以没有输入但必须要有输出

 

10.

注意:

如果要实现一个多线程(非MFC)程序, 选择多线程CRT, 创建线程的时候应该用CreateThread还是_beginthreadex()?

选择:_beginthreadex()

解析:

_beginthreadex()比较于 CreateThread()有更高的线程安全性不会造成多个线程共用同一个全局变量的情况

 

11.

有关循环队列

判空:Q.rear==Q.front;

约定为头指针指向尾指针;

队列满:(Q.rear+1)%MAXQSIZE==Q.front;

尾指针下一个位置是头指针;

循环队列插入元素是(rear+1)%MAXQSIZE;

循环队列删除元素是(front+1)%MAXQSIZE;

front比rear“小”, front=20,rear=15,说明队列中有效数据个数是 15 + (m - 20)  =  m - 5个

例:假设有MAXQSIZE=60(0~59)的一个数组,存储一个满循环队列Q

    队列为空时,初始化Q.front=Q.rear=0

    队列为满时:Q.front=0,Q.rear=59

ps:这里我们可以探讨为什么要对MAXQSIZE取余求模,详如下:

    如果不取余:Q.rear+1=59+1=60,数组中最大下标为59而无60显然不取余是不对的

    取余后:(Q.rear+1)%MAXQSIZE=(59+1)%60=60%60=0,而Q.front= 0,因此可以构成判断。

 

 

12.

文本加密的方法:

RSA

RC4

DES

 

13.

TCP协议建立连接的两方,如果一方突然发生故障(比如断电)断开了连接

1.TCP连接不能 自动查别 断连的现象

2.TCP中keepalive机制是默认不打开的

打开后会定时向连接对方发送ACK包(linux下默认是7200s 即2小时发生一次发送一次握手信息),如果在发送ACK包后对方不回应才能检测道对方的断开信息

3.可以自己实现”心跳检测”的方法来确定对方是不是已经断开连接

Heartbeat机制是客户端每个一段时间向服务器发送数据包,来通知服务端该客户端保持连接

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值