一大早醒來,外面淅淅瀝瀝的雨綿綿的下着,牀鋪真的舒服,可是我也不能就在牀上刷微博看小說吧,因此想起了昨晚下載的牛客網的APP,趕忙掏出個人大寶貝---升級到iOS11的腎(各位,真的建議升級到11,不是我說,速度快了不少,雖然還有很多的bug待修復,可是真的快了好多,並且感受內部的功耗設定都改了,比較耐用了點了。雖然最大的悲劇是變醜了不少 PS:變醜觀點來自個人審美比較好的妹子),而後刷了一套C++的面試題,這些基礎知識很久沒看過了,最近沉迷於算法和數據結構,因此基本大腦大部分地區已經被指針佔領了,C++作的好勉強,後面本身查查補補,總算寫出一份攻略,歡迎品鑑,也請幫我糾正,畢竟我如今是個半吊子。面試
第一題解析: 算法
alp是一個指針數組,含有三個指針,分別指向三個字符串的內存區,那麼alp[1]
很天然的就是指向「DEF」這個內存區,而後puts
雖然不知道是啥,可是琢磨着應該是把整個連續內存區的都整出來的吧!那麼沒問題,就是D數組
第二題解析:安全
這個代碼其實寫的不是很適合閱讀,應該要有比較好的代碼編寫規範,前後,嵌套順序明顯纔是優秀的!本題的代碼嵌套關係以下圖所示,在if(a>b)
與後面的printf("%d\n",d);
不存在主從關係,也就是說無論你if(a>b)
是否能深刻運行,都會有printf("%d\n",d);
的執行,因此這時候就只要考慮if(a>b)
可否改變d的值?而且自身有沒有輸出?而後看了下 a>b 這很明顯是不可能的,因此if直接就跳出了,到了後面的printf("%d\n",d);
bash
第三題解析:數據結構
這個我不知道啊!!因此只好借用討論區的回答咯。錯了不怪我~~大文件表空間只能包含一個文件,可是文件能夠達到 4G 個數據塊大小。(只能包含一個文件,可是一個文件裏能夠包含多個數據文件??不知道是否是這樣理解)
函數
第四題解析:ui
首先,第一行第二行是字符數組的複製,相似因而一個字符串,而後再第三行進行了一個字符串的操做函數,—strcpy
意思就是把字符串整個的複製給ccString1
,那麼這個時候ccString1=」No「
,並未保留後續的 Page Fault??
第四句是比較兩個字符串,相等輸出0,不相等輸出1,那麼很顯然的,strcmp
輸出的是1,不等於0,那麼在if內部的bool型變量就是0,那麼就不會執行cout<<ccString2;
,而是直接進行spa
else
cout<<ccString1;複製代碼
第五題解析(錯題):3d
在 C/C++ 語言中,sizeof() 是一個判斷數據類型或者表達式長度的運算符。在32位機上,全部指針類型變量佔用內存字節數都爲4由於32位機就是 4字節 * 8個二進制位/字節 計算出來的.若是在64位機上,指針佔用內存大小就是:8個字節.
那麼接下來其實就是判斷括號內的變量的類型,而後根據查表得出的結果找出各自的長度。對照表以下圖,對照以後就有
A:8
B:17
C:1
D:8複製代碼
第六題解析:
這個沒多少好說的,我全憑感受作的,第一個的話,宏我並不記得有這麼大的安全隱患,第三個,宏就是爲了程序的可讀性,可修改性作出的貢獻,第四個,宏定義對於提升運行效率其實沒啥影響吧,只是方便觀看以及方便修改吧!我不太清楚,尚未精學,後面慢慢應該還會講到吧!
第七題解析【錯題】:
我記岔了,覺得公有繼承的派生類的話不會把父類的私有量繼承過來,實際上會的,可是隻是不能訪問,因此說最終B裏面就是三個指針,無論能不能訪問,sizeof(B)
是不會錯的!8*3=24咯 ~
第八題解析【錯題】:
這個相對來講算是比較複雜了。我當時是理清楚了的,可是後面好像是判斷錯誤,而後多讀了一個數的樣子,下面詳細解釋下,
int fun1(char s[], char a, int n)
{
int j;
j = n;
while (a < s[j] && j > 0) j--;
return j;
}複製代碼
這個函數是要返回從s中的第七個開始往下數,第多少個可以知足不大於a的條件,就是說s是一個遞增的字符數組,a處於這個遞增數列的中間,從高處開始找到第一個小於或等於a的字符的碼值返回,
這就是fun1
的做用,fun2
的做用相似,從低處開始找,找到第一個大於等於a的字符的碼值返回,從主函數裏面知道,s的碼值從1-7對應着 D F H J L N P
那麼很顯然的fun1
返回的是5,fun2
的返回值爲6,我是傻逼嗎?當時數的時候fun1
數出來6!!!
第九題解析:
這個題目我真的是靠感受來的。首選,首先f1要傳進去的實參必須是一個指針,因此C沒毛病,而後關於D的話,我當時想的是,若是帶不帶括號有區別的話,那麼固然是要尊重初始定義的時候的帶括號的方法了。因此堅決果斷的選了D 如今想一想,若是帶括號沒用,帶這個括號幹嗎,閒的雞兒疼嗎??至於別的,同理,A須要帶括號,B裏面傳入指針,不要*
就行了!
第十題解析【錯題】:
老實說這種題目我見所未見,也就今天第一波牛客見到了。之後慢慢來吧!
本題是16位機器,char
型佔1個字節,int型佔2個字節。結構體中字節對齊有兩條規則:
int
型b只能從0,2,4...等地址處開始放;(int b)
長度的整數倍;根據上面兩條規則,畫出內存示意圖。根據規則1,int b
從2處開始放,此時結構體總長度爲(1 + 1 + 2 + 1 = 5);再根據規則2,結構體總長度應爲2的整數倍,故應爲6.描紅的兩個字節表示被浪費的。
一擡頭,已經十點半了。起牀!!不過我一直在糾結,我要不要繼續寫下去寫的這麼細呢?感受挺浪費時間的,可是又是一次很好的總結,並且對於之後複習有着莫大的好處。因此繼續堅持下吧,若是熬不下去了。那再說!