日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++语言函数中参数的入栈顺序

發布時間:2025/3/16 c/c++ 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++语言函数中参数的入栈顺序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于函數,之前認為會用就行了,對其中的原理并不是很了解,就比如函數中參數的入棧順序(在這說明一下,函數的參數是保存在棧中的,還有一些局部變量也是存放在棧中),這個問題來源于某互聯網的面試題,當然答得很不好,查了很多大牛的博客做一下總結。

#include <iostream> using namespace std; void foo(int x,int y,int z){cout << &x << endl; // 0x28ff10cout << &y << endl; // 0x28ff14cout << &z << endl; // 0x28ff18 }int main(){foo(1,2,3); }

首先可以看出參數x,y,z 的地址從低到高,而棧的地址分配是從高到低,從而可以看出參數的入棧順序使從右向左的,不過為什么要這樣設計呢?通過查看各位大牛寫的博客,自己做了一下總結:參數從右往左的入棧順序的好處可以動態變化參數個數。如果自左向右的入棧方式,最前面的參數被壓在棧底,除非知道參數個數,否則是無法通過棧指針的相對位移求得最左邊的參數,這樣就變成了最左邊參數的個數不確定,正好和動態參數個數的方向相反。而這樣設計的目的主要也是為了支持可變長參數形式。

不過在此我也提出一點疑問:這個是怎么支持動態變化參數的個數呢?可能提問的問題有點描述不清,還請見諒

選出一個確定的參數,確定參數類型,定位后續的參數

簡單簡述一下,具體見鏈接

附上大牛解析:

https://blog.csdn.net/u014181676/article/details/22103265

https://blog.csdn.net/hnyzyty/article/details/46427219

可變參數

http://www.cnblogs.com/cpoint/p/3368993.html

http://www.cnblogs.com/chinazhangjie/archive/2012/08/18/2645475.html

總結

以上是生活随笔為你收集整理的C/C++语言函数中参数的入栈顺序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。