一、簡述陣列與指標的區別?
陣列要麼在靜態儲存區被建立(如全域性陣列),要麼在桟上被建立
指標可以隨時指向任意型別的記憶體塊
(1) 修改內容上的差別
char a = "hello"; a[0] = 'x';
char *p = "world"; p[0] = 'x';
指標p指向字串常量 不能修改
(2) 用運算子 sizeof 可以計算陣列的位元組數,而指標得到的是乙個指標
變數的位元組數
二、關鍵字 const 是什麼含義,有什麼作用?
含義:const 是乙個修飾符,被修飾的物件或者是變數是不可修改的,
也就是 const 可讀不可改,const 在誰的前面就修改誰。
c語言:
1、阻止乙個變數被改變,使用 const 來修飾
2、const 可以修飾指標本身,也可以修飾指標所指向的內容
3、在對乙個函式進行宣告的時候,可以使用 const 對形參進行修飾,
表明它是乙個輸入引數在函式的內部不可寫
c++:
1、const 用於定義常量,可以進行資料靜態型別安全檢查
2、const 修飾函式形式引數,輸入引數為使用者自定義型別和抽象資料型別時,
應該將"值傳遞"改為"const &"傳遞,提高效率。
3、對於類的成員函式,表明它是乙個常函式,不能修飾類的成員變數
4、對於類的成員函式,有時候必須指定其返回型別時 const ,這樣返回值不能被直接修改
三、請說出 const 與 #define 相比,有何優點?
1、const 常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查
而後者只進行字串替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤。
2、有些整合化的調式工具可以對 const 常量進行除錯,但是不能對巨集常量進行除錯
四、什麼是預編譯,何時需要預編譯?
預編譯又稱為預處理,是做些**文字的替換工作,處理以 # 開頭的指令,比如拷貝 #include
包含的檔案**,#define 巨集定義的替換,條件編譯,就是為編譯做得預備工作的階段
1、總是使用不經常改動的大型**體
2、程式由多個模組組成,所有模組都使用一組標準的包含檔案和相同的編譯選項
五、在c++程式中呼叫被c編譯器編譯後的函式,為什麼要加 extern"c"?
c++語言支援函式過載,c語言支援函式過載。函式被c++編譯後在庫中的名字與c語言的不同。
假設某個c函式的宣告如下:void foo(int x, int y);該函式被c編譯器編譯後在庫中的名字為_foo,
而c++編譯器會產生像_foo_int_int之類的名字用來支援函式過載和型別安全連線,由於編譯後
名字不同,c++程式不能呼叫c函式,c++提供了乙個c連線交換指定符號 extern"c"來解決這個問題。
筆試題整理
n副撲克,張數為m,大小為1 m,每幅撲克抽一張,求和恰好為k的組合數,結果對10e9 7取餘數。思路 動態規劃。和為i,j副撲克,dp i j dp i 1 j 1 dp i m j 1 此處需要判斷 i m 0 初始化,j 1,i m,dp i j 1 i j,dp i j 1,後面的情況不可能...
C 筆試題整理
1.已知string類定義如下 class string 嘗試寫出類的成員函式實現。答 string string const char str else string string const string another string string operator const string r...
最近筆試題整理
已知資料表a中每個元素距其最終位置不遠,為了節省時間,應該採取的演算法是 a.直接選擇排序 b.直接插入排序 c.堆排序 d.快速排序 當元素基本有序時,插入排序的排序時間在o n 選b直接選擇排序 straight select sorting 也是一種簡單的排序方法,它的基本思想是 第一次從r ...