深入C 02 深入學習C 還必須掌握的基礎

2022-10-11 13:39:07 字數 2396 閱讀 6842

1.給預設值方向:從右向左給預設值;

2.呼叫效率:如果傳預設值或者立即數(不需要從容器或記憶體取取的數字)的話都是直接將數字直接push進棧;沒有mov彙編指令的操作;(面試回答要往彙編上描述)

3.預設值給的地方:定義和宣告處均可以給預設值;

4.形參給預設值的時候,定義是可以多次定義這個函式的,都可以給預設值,宣告的時候也可以給,但是每個引數的預設值只能出現一次;

函式呼叫開銷:就是彙編生成的一系列指令,生成棧幀,對棧頂和棧底指標不斷操作等,對於函式命令少,執行多次,函式呼叫開銷大,不值得;

1.內聯函式和普通函式的區別:①在編譯的過程中沒有函式呼叫開銷(直接在函式呼叫點將函式**展開)②函式也不再生成相應的函式符號(比如sum_int_int那些)③inline這個關鍵字只是建議編譯器處理成內聯函式,如果編譯器發現是遞迴(需要知道自己呼叫自己多少次的)或者**量大不適合內聯等,不會設定成內聯函式(可以通過檢視符號表中有沒有生成符號);④inline只有再release版本才出現,在debug版本上,inline是不起作用的,因為需要除錯;(面試往原理上回答);

可以檢視符號表的指令:

1.c++為什麼支援函式過載,而c不支援:

c++符號函式名取決於:函式名+引數列表, 而c符號函式名取決於:函式名;

2.函式過載需要注意:

①一組函式,函式名相同,引數列表個數或者型別不同,這組才能稱為函式過載;僅僅返回值不同,必然不是過載;

②注意

深入學習c 書單

本來有一本c 程式設計,一本c primer 沒怎麼看過 經過師兄推薦又買了effective c 和more effective c 技術面試的時候會問的比較深 要研究的比較透徹一些 第一篇一些同學問我,如何學好c 我沒有別的辦法給你們,唯一的辦法就是讀書,讀大 量的書,就可以解決。要把c 作為日...

C 深入學習 反射

目錄 一 概述 二 基本使用 2.1 獲取程式類容基本步驟 2.2 使用舉例 2.2.1 建立物件 訪問設定屬性值 使用其中無參方法 2.2.2 建立帶參建構函式並訪問其中帶參方法 2.2.3 反射過載過的方法 2.2.4 反射泛型類和泛型方法 2.2.5 反射型別中的私有類容 屬性 方法 2.2....

C 深入學習 特性

目錄 一 概述 二 基本概念 三 自定義特性 四 給物件的屬性自定義驗證規則 五 總結 特性,說的白話一點,就是說明某個東西的特殊性,它不能單獨存在,必須依附在某個東西上,這裡的東西是指c 中類,屬性,方法。特性就是對這些類,方法,屬性進一步修飾。比如說,定義個 sting 型別 屬性a 我們要求該...