面試題 6:寫乙個「標準」巨集 min #define min(a,b)((a)<=(b)?(a):(b)) 注意:在呼叫時一定要注意這個巨集定義的***,如下呼叫: ((++*p)<=(x)?(++*p):(x)。 p 指標就自加了兩次,違背了 min 的本意。 3
面試題 7:乙個指標可以是 volatile 嗎 可以,因為指標和普通變數一樣,有時也有變化程式的不可控性。常見例:子中斷服務子程式修改 乙個指向乙個 buffer 的指標時,必須用 volatile 來修飾這個指標。 說明:指標是一種普通的變數,從訪問上沒有什麼不同於其他變數的特性。其儲存的數值是個整型 資料,和整型變數不同的是,這個整型資料指向的是一段記憶體位址。
面試題 8:a 和&a 有什麼區別 請寫出以下**的列印結果,主要目的是考察 a 和&a 的區別。 #include void main( void ) ; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); return; } 輸出結果:2,5。 注意:陣列名 a 可以作陣列的首位址,而&a 是陣列的指標。思考,將原式的 int *ptr=(int *)(&a+1); 改為 int *ptr=(int *)(a+1);時輸出結果將是什麼呢?
面試題 9:簡述 c、c++程式編譯的記憶體分配情況 c、c++中記憶體分配方式可以分為三種: (1)從靜態儲存區域分配: 內存在程式編譯時就已經分配好,這塊內存在程式的整個執行期間都存在。速度快、不容易出錯, 因為有系統會善後。例如全域性變數,static 變數等。 (2)在棧上分配: 在執行函式時,函式內區域性變數的儲存單元都在棧上建立,函式執行結束時這些儲存單元自動被釋 放。棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量有限。 (3)從堆上分配: 即動態記憶體分配。程式在執行的時候用 malloc 或 new 申請任意大小的記憶體,程式設計師自己負責在何 時用 free 或 delete 釋放記憶體。動態記憶體的生存期由程式設計師決定,使用非常靈活。如果在堆上分配了空間, 就有責任**它,否則執行的程式會出現記憶體洩漏,另外頻繁地分配和釋放不同大小的堆空間將會產生 堆內碎塊。 乙個 c、c++程式編譯時記憶體分為 5 大儲存區:堆區、棧區、全域性區、文字常量區、程式**區。 4 面試題 10:簡述 strcpy、sprintf 與 memcpy 的區別 三者主要有以下不同之處: (1)操作物件不同,strcpy 的兩個操作物件均為字串,sprintf 的操作源物件可以是多種資料型別, 目的操作物件是字串,memcpy 的兩個物件就是兩個任意可操作的記憶體位址,並不限於何種資料型別。 (2)執行效率不同,memcpy 最高,strcpy 次之,sprintf 的效率最低。 (3)實現功能不同,strcpy 主要實現字串變數間的拷貝,sprintf 主要實現其他資料型別格式到字 符串的轉化,memcpy 主要是記憶體塊間的拷貝。 說明:strcpy、sprintf 與 memcpy 都可以實現拷貝的功能,但是針對的物件不同,根據實際需求,來 選擇合適的函式實現拷貝功能。
面試題 11:設定位址為 0x67a9 的整型變數的值為 0xaa66 int *ptr; ptr = (int *)0x67a9; *ptr = 0xaa66; 說明:這道題就是強制型別轉換的典型例子,無論在什麼平台位址長度和整型資料的長度是一樣的, 即乙個整型資料可以強制轉換成位址指標型別,只要有意義即可。 面試題
12:物件導向的三大特徵 物件導向的三大特徵是封裝性、繼承性和多型性: 封裝性:將客觀事物抽象成類,每個類對自身的資料和方法實行 protection(private, protected, public)。 繼承性:廣義的繼承有三種實現形式:實現繼承(使用基類的屬性和方法而無需額外編碼的能力)、可 視繼承(子窗體使用父窗體的外觀和實現**)、介面繼承(僅使用屬性和方法,實現滯後到子類實現)。 多型性:是將父類物件設定成為和乙個或更多它的子物件相等的技術。用子類物件給父類物件賦值 之後,父類物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。 說明:物件導向的三個特徵是實現物件導向技術的關鍵,每乙個特徵的相關技術都非常的複雜,程 序員應該多看、多練。
經典C C 面試題
1.介紹一下stl,詳細說明stl如何實現vector。answer stl 標準模版庫,standard template library 它由容器演算法迭代器組成。stl有以下的一些優點 可以方便容易地實現搜尋資料或對資料排序等一系列的演算法 除錯程式時更加安全和方便 即使是人們用stl在uni...
經典C C 面試題
1.介紹一下stl,詳細說明stl如何實現vector。answer stl 標準模版庫,standard template library 它由容器演算法迭代器組成。stl有以下的一些優點 可以方便容易地實現搜尋資料或對資料排序等一系列的演算法 除錯程式時更加安全和方便 即使是人們用stl在uni...
C C 經典面試題
2018 03 07 昨天在牛客上看到這麼一道c語言面試題,挺經典的,特來分享給大家。程式如下,問輸出結果 include int main int p int a 1 printf d d a 1 p 1 a 1 其實很簡單,指的就是a 1 輸出2,沒問題。關鍵就在於這個第二個輸出 p 1 是多少...