c c 面試筆試知識點 牛客網(1)

2021-08-04 18:13:33 字數 3458 閱讀 9144

我最近在牛客網上做題目,每道題目都有一些小的知識點,我把它總結下來,給大家分享,希望給面試筆試的人一些幫助。有些知識點太多了,所以只寫了知識點。希望大家多多指出,共同進步,拿到乙份好的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的返回值...