C里面的变长参数
原文来自个人博客(求访问/关注/收藏): https://bbing.com.cn/ CSDN个人博客不定期转载
stdarg.h
这里用到的是stdarg.h
这个库, 可以在C语言里面实现可变长参数.
当然C++会简单得多, C++11之后的模板原生支持可变长参数.
几个函数va_list、va_start、va_arg、va_end,定义在stdarg.h
内存结构
先需要理解C/C++函数入参的顺序.
按照以下的demo, 将其翻译成汇编代码.
#include <iostream>
using namespace std;
int sum(const int &a, const int &b, const int &c)
{
int d = 0;
d = a + b + c;
return d;
}
int main()
{
int s = sum(1, 2, 3);
cout << s << endl;
return 1;
}
首先是main函数, 主体部分的汇编
mov DWORD PTR