c++默认参数顺序的问题
PHPz
PHPz 2017-04-17 14:58:48
0
3
544

c++默认参数顺序为什么是自右往左?为什么不能从左往右呢?请问这是什么原因。

PHPz
PHPz

学习是最好的投资!

全部回覆(3)
小葫芦

自右往左 可以支援任一參數

參數是要壓棧的,棧 是先入後出,如果是從左往右壓入棧中,要找到最左邊的第一個參數就很麻煩~

Ty80

壓棧順序和大端字節序和小端字節序一樣,哪個都可以的。 C語言預設選擇從右往左,應該是因為堆疊是向下增長的,所以這樣會使壓入的參數記憶體排列正好和書寫的順序一致而已,調試看內存可能比較方便。不過實際程式碼存取都是棧指標+偏移的方式,所以對於機器來說沒有特別意義。
能不能支援可變參數,主要是看是不是由呼叫者負責清除堆疊。例如__stdcall也是從右往左壓棧,但是被呼叫者清除堆疊,所以不支援可變參數。
__pascal是模仿PASCAL語言從左到右壓棧,VC已經不再支援了。

迷茫

假設由左往右

int f(int a = 1, int b);

那你f(1)的1到底是傳給了a還是b呢。 。所以是不能從左往右的。 。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!