當前位置:文思屋>學習教育>考研>

筆試題(堆和棧)

文思屋 人氣:8.36K

解釋區域性變數、全域性變數和靜態變數的含義。
   區域性變數包括函式的形參,包含在函式體或者語句塊內的變數,區域性變數的生存期在退出函式或語句塊後結束。全域性變數是指在所有函式和語句塊之外的變數,它對於整個程式均可見,全域性變數的生存期與程式的生存期相同.
   靜態變數指由關鍵字static宣告的變數,它的作用域和其他變數一樣,由它所在的位置決定,如在函式體或語句塊中宣告,則只在函式體或語句塊可見,其他地方均不可見.它的生存期與程式相同.

筆試題(堆和棧)

解釋堆和棧的區別。
簡述如下:
棧上分配的'記憶體,由系統自動分配,系統會自動收回.如果需要動態分配記憶體,則只能通過malloc/new在堆上分配的記憶體,使用完畢後,通過free/delete來釋放記憶體。5.論述含引數的巨集與函式的優缺點。含引數的巨集優點:省去了函式呼叫的開銷,執行效率高.含引數的缺點:由於巨集本質上是字串的替換,所有可能會由於一些引數的副作用導致得出錯誤的結果.
如:
#define max(a, b)    ( ((a) > (b)) ? (a) : (b) )
如果程式中出現這樣的呼叫: max(a++, b);將導致a被計算2次,從而可能得到錯誤的結果,而函式呼叫不會出現這種問題.另外,如果程式中有多次巨集替換的話,可能導致程式碼體積變大.函式的優點是:沒有帶引數巨集可能導致的副作用,計算的正確性較巨集更有保證.
函式呼叫的缺點:函式呼叫需要一些引數,返回地址等入棧,出棧的開銷,效率沒有巨集函式高.
 

TAGS:筆試