国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 芷江| 渝中区| 化州市| 伊金霍洛旗| 鹤岗市| 济阳县| 赤城县| 鹤峰县| 北辰区| 阜城县| 抚松县| 多伦县| 闽侯县| 濉溪县| 双鸭山市| 盘山县| 康保县| 浦江县| 靖远县| 河南省| 富源县| 沙湾县| 宁晋县| 乌鲁木齐县| 巴东县| 德州市| 高唐县| 吉林省| 左贡县| 黄陵县| 玉林市| 濉溪县| 贵定县| 富平县| 临泉县| 龙游县| 静乐县| 平泉县| 澄江县| 济宁市| 策勒县|