我最近在牛客網上做題目,每道題目都有一些小的知識點,我把它總結下來,給大家分享,希望給面試筆試的人一些幫助。有些知識點太多了,所以只寫了知識點。希望大家多多指出,共同進步,拿到乙份好的offer。
1. int(*n)[10]; 是陣列指標
sizeof(n)=4
int* n[10]; 是指標陣列
sizeof(n)=40
2.
class b
char ch;
int x;
};sizeof(8) 預設
4位元組對齊
class b
int x;
char ch;
char ch;
int y;
sizeof(12) 兩個合併為乙個
3. 函式的定義不能巢狀,但函式呼叫可以巢狀
4. file *f = fopen( "test.bin", "wb" );以2進製開啟乙個檔案
5. 所謂私有成員是指只有類中所提供的成員函式才能直接使用它們,任何類以外的函式對它們的訪問都是非法的。
(錯誤的,友元可以)
6. 在類外定義派生類的建構函式的一般形式有兩種為:
(1) 《派生類名》::《派生類名》(引數總表):基類名(參數列),物件名1(參數列1),物件名2(參數列2),...物件名n(參數列n)
初始化語句;
(2)也可以有另一種形式,那就是像本題中的,寫成成員列表初始化的形式,也就是將(1)中建構函式體內的初始化語句搬到冒號後面去:
《派生類名》::《派生類名》(引數總表):基類名(參數列),物件名1(參數列1),物件名2(參數列2),...物件名n(參數列n),派生類中的成員(參數列)
7. 類的靜態成員屬於整個類
而不是某個物件,可以被類的所有方法訪問,子類當然可以父類靜態成員;
靜態方法屬於整個類,在物件建立之前就已經分配空間,類的非靜態成員要在物件建立後才有記憶體,所有靜態方法只能訪問靜態成員,不能訪問非靜態成員;
靜態成員可以被任一物件修改,修改後的值可以被所有物件共享。
8. 在c++中為了盡量保證精度不丟失,一般會把低轉化為高精度,比如char->int->float->double
(i)i==(int)(float)i 由於i(int)經過強制型別轉換從int->float->int和左邊相同 正確
(ii)f==(float)(int)f 由於f(float)經過強制型別轉換 從float->int,雖然int也強制型別轉換了但是小數點已經去掉,故精度丟失,和左邊不一樣,錯誤
(iii)f==(float)(double) f 由於f(float)經過強制型別轉換 從float->double->float和左邊相同 正確
(iv)(d+f)-d==f 左邊為了盡量保證精度不丟失,一般會把低轉化為高精度從float->double 和右邊float不同 錯誤
9. 乙個類有基類、內部有乙個其他類的成員物件,建構函式的執行順序
基類-成員物件-自己的
10.
以下哪些做法是不正確或者應該極力避免的
:建構函式宣告為虛函式
,建構函式中呼叫虛函式
,析構函式中呼叫虛函式
11.
private 屬性不能夠被繼承。
使用private繼承,父類的protected和public屬性在子類中變為private;
使用protected繼承,父類的protected和public屬性在子類中變為protected;
使用public繼承,父類中的protected和public屬性不發生改變;
private, public, protected 訪問標號的訪問範圍:
private:只能由1.該類中的函式、2.其友元函式訪問。
不能被任何其他訪問,該類的物件也不能訪問。
protected:可以被1.該類中的函式、2.子類的函式、以及3.其友元函式訪問。
但不能被該類的物件訪問。
public:可以被1.該類中的函式、2.子類的函式、3.其友元函式訪問,也可以由4.該類的物件訪問。
12.
非法指標並不只是未分配的記憶體,而包括所有已經不能訪問的記憶體,例如,指向已經返回的函式區域性變數,越過陣列邊界的位址等。
兩個同型別指標相減有意義,這就是求差,但相加沒有意義。
比如,兩個陣列元素一一對應,當我們已知a的x元素,而要找b中與之對應的y時,就可以使用。
13. b + (x - a) 其中x - a就是同型別指標相減,這是有效也是唯一的作法。
14.
eginthreadex()比較於
createthread()
有更高的執行緒安全性,不會造成多個執行緒共用同乙個全域性變數的情況
15.
c語言程式中的整數不能是二進位制整數
16.
區別靜態關聯和動態關聯,如果是通過物件名呼叫虛函式,在編譯階段就能確定呼叫的是哪乙個類的虛函式,所以屬於靜態關聯,如果是通過基類指標呼叫虛函式,屬於動態關聯。
17.
32位指標大小位4個位元組,64位指標大小位8個位元組。空指標也是如此。
18.
c/c++型別安全
19.
聯合體
20.
總結一下引用和指標的區別:
1、引用是直接訪問,指標是間接訪問
2、引用是變數的別名,本身不單獨分配自己的記憶體空間。指標有自己的記憶體空間。
3、引用一旦初始化,不能再引用其他變數。而指標可以
21.
單精度浮點數的有效位數是7位。
雙精度浮點數的有效位數是16位。
22.
指標陣列:實際上是陣列,其元素都是指標;如:int *p[3];
陣列指標:實際是指標,指向陣列。如:int (*p)
[3]:指向陣列的指標,該陣列有3個
int型資料。
[]優先順序比*高。
23.
建構函式初始化時必須採用初始化列表一共有三種情況,
1.需要初始化的資料成員是物件(繼承時呼叫基類建構函式)
2.需要初始化const修飾的類成員
3.需要初始化引用成員資料
24.
delete 釋放
new分配的單個物件指標指向的記憶體
delete 釋放
new分配的物件陣列指標指向的記憶體
所以,在用這些類生成物件陣列的時候,用delete來釋放它們才是王道。而用
delete
來釋放也許不會出問題,也許後果很嚴重,具體要看類的**了.
25.
char *q=」qweewq」,是乙個常量字串指標,存放在字串常量區
,函式結束不會釋放裡面的內容,無法修改。若要修改只能改為
char q=
「qweewq
」,但是這種方式放在棧區,函式結束就會被釋放。
面試筆試 http知識點
1 常用的http方法有哪些?get 用於請求訪問已經被uri 統一資源識別符號 識別的資源,可以通過url傳參給伺服器 post 用於傳輸資訊給伺服器,主要功能與get方法類似,但一般推薦使用post方式。put 傳輸檔案,報文主體中包含檔案內容,儲存到對應uri位置。head 獲得報文首部,與g...
C C 面試知識點1
由於記憶體對齊的原則,在32位機器上,記憶體是4位元組對齊,也就是說,不夠4個位元組的按 4位元組來算。同理,在64位機器上,記憶體是8位元組對齊。struct test1 test int length 1 sizeof test 12 4 4 4 sizeof 是運算子不是函式 struct t...
牛客網錯題知識點整理C C (一)
int main void 答案為 12 a a a a a a a 3 9 a 6 6 12 一般為算數運算子 關係運算子 邏輯運算子 條件運算子 答案為 1,8,1,4 類a占用1個位元組的佔位空間,類b在32位機器對齊位元組數為4,char為1,int為4,所以補齊到8個位元組,函式c的返回值...