C相關筆試題或者面試題中的概念以及技巧題1

2021-05-01 19:14:09 字數 1229 閱讀 9732

計算2進製數中1的個數,主要用到m&(m-1)

交換a,b不用中間變數,用異或:a=a^b;b=a^b;a=a^b

sizeof不是函式,它是個類似巨集定義的特殊關鍵字,只要是指標,大小就是4.

靜態變數時存放在全域性資料區的,而sizeof計算棧中分配的大小,是不會計算在內的。

sizeof(虛函式)(類)

class no_virtual

int    fun2() const

private:

int a;

}class one_virtual

int    fun2() const

private:

int a;

}class two_virtual

virtual int    fun2() const

private:

int a;

}以上三個類中:

no_virtual沒有虛函式,sizeof(no_virtual)=4,類no_virtual的長度就是其成員變數整型a的長度;

one_virtual有乙個虛函式,sizeof(one_virtual)=8;

two_virtual有兩個虛函式,sizeof(two_virtual)=8; 有乙個虛函式和兩個虛函式的類的長度沒有區別,其實它們的長度就是no_virtual的長度加乙個void指標的長度,它反映出,如果有乙個或多個虛函式,編譯器在這個結構中插入乙個指標( v p t r)。在one_virtual 和two_virtual之間沒有區別。這是因為v p t r指向乙個存放位址的表,只需要乙個指標,因為所有虛函式位址都包含在這個表中。

指標和引用:

int &reiv  這種寫法是錯誤的,引用不能為空,必須同時初始化。

const double di  這種寫法是錯誤的,const常量賦值時,必須同時初始化。

char c="hello world" 分配區域性陣列  對應記憶體中的棧

char *c ="hello world" 分配全域性陣列 對應記憶體中的全域性區域 全域性區域的值是不能進行修改的

scanf用法 ,注意裡面的引數是輸入數的位址,而不是輸入數本身

scanf(格式控制,位址表列)

int scanf(char *format[,argument,...]);

「格式控制」的含義同printf函式;「位址表列」是由若干個位址組成的表列,可以是變數的位址,或字串首位址。

面試題中的路由

路由最初是出現在後端中,後端根據不同的路由返回不同的頁面,後來隨著單頁面應用 spa 誕生,前端也出現了路由,實現了不用重新整理頁面就可以更新頁面的效果。簡單的說,路由就是url到函式的對映 路由的本質是 監聽url的變化,然後匹配路由規則,顯示相應的頁面。在react router中,路由使用基本...

筆試面試題

1 昨天參加一公司筆試,給幾道演算法題整懵了,其實也不難,但好久沒有碰演算法,只是有思路,要讓我在這麼短的時間內寫出程式來還是不行。2 這裡將其中一道稍微複雜一點的演算法題寫下來,以此小結。3 4 題目描述 5 將n個雞蛋放入到m個籃子中去 n m 保證每個籃子中至少乙個雞蛋,然後指定乙個數x,要求...

面試題 筆試

題1 有如下資料庫表tab 請用乙個 delete 語句,刪除 value 重複的行,每個 value 只保留 id 最小的一行。delete from tab where id notin select from select min id from tab groupby value a 好像有...