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機制是客戶端每個一段時間向服務器發送數據包,來通知服務端該客戶端保持連接
?
?
?
總結
以上是生活随笔為你收集整理的7-25日牛客网刷题 未知点、错题 集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7-24练习 测试
- 下一篇: 7-26复习重载并实现重载部分符号