搜尋

首頁  >  問答  >  主體

c++默认参数顺序的问题

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

PHPzPHPz2803 天前567

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-17 15:00:48

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

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 15:00:48

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

    回覆
    0
  • 迷茫

    迷茫2017-04-17 15:00:48

    假設由左往右

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

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

    回覆
    0
  • 取消回覆