国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++函數(shù)參數(shù)為何是從右到左?

2019-11-06 08:58:15
字體:
供稿:網(wǎng)友

C/C++函數(shù)參數(shù)為何是從右到左?

那是因為不定長參數(shù)函數(shù)的存在。。。。

我們先看看PRintf函數(shù)

_Check_return_opt_ _CRTIMP int __cdecl _vfprintf_l(_Inout_ FILE * _File, _In_z_ const char * _Format, _In_opt_ _locale_t _Locale, va_list _ArgList);

沒錯,它是一個不定參函數(shù),那么我們在實際使用中是怎么樣知道它的參數(shù)個數(shù)呢?這就要靠format了,編譯器通過format中的%占位符的個數(shù)來確定參數(shù)的個數(shù)。

現(xiàn)在我們假設(shè)參數(shù)的壓棧順序是從左到右的,這時,函數(shù)調(diào)用的時候,format最先進棧,之后是各個參數(shù)進棧,最后pc進棧,此時,由于format先進棧了,上面壓著未知個數(shù)的參數(shù),想要知道參數(shù)的個數(shù),必須找到format,而要找到format,必須要知道參數(shù)的個數(shù),這樣就陷入了一個無法求解的死循環(huán)了!!

而如果把參數(shù)從右到左壓棧,情況又是怎么樣的?函數(shù)調(diào)用時,先把若干個參數(shù)都壓入棧中,再壓format,最后壓pc,這樣一來,棧頂指針加2便找到了format,通過format中的%占位符,取得后面參數(shù)的個數(shù),從而正確取得所有參數(shù)。

如此,世界就正常了。

注意:

函數(shù)參數(shù)的壓棧順序跟函數(shù)參數(shù)計算順序不是一回事,函數(shù)參數(shù)計算順序跟具體的編譯器實現(xiàn)有關(guān)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 河曲县| 平武县| 南江县| 荣昌县| 广灵县| 多伦县| 苏尼特左旗| 玛曲县| 新巴尔虎右旗| 德兴市| 平阳县| 彭山县| 海城市| 商城县| 波密县| 灵璧县| 东乡族自治县| 武宁县| 望谟县| 平远县| 隆德县| 申扎县| 吴忠市| 儋州市| 砀山县| 深水埗区| 英吉沙县| 松潘县| 安丘市| 宁化县| 岐山县| 常熟市| 洛南县| 正蓝旗| 信丰县| 宝丰县| 东乌珠穆沁旗| 黔江区| 清远市| 交城县| 明光市|