概述
C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;
即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题
var_list可变参数介绍
VA_LIST...是在C语言中解决变参问题的一组宏,原型:
typedef char* va_list;
其实就是个char*类型变量
除了var_list ,我们还需要几个宏来实现可变参数
「va_start、va_arg...可变参数原理
在进程中,堆栈地址是从高到低分配的.当执行一个函数的时候,将参数列表入栈,压入堆栈的高地址部分,然后入栈函数的返回地址,接着入栈函数的执行代码,这个入栈过程,堆栈地址不断递减,
「黑客就是在堆栈中修改函数返回地址...函数在堆栈中的分布情况是:地址从高到低,依次是:函数参数列表,函数返回地址,函数执行代码段.
说这么多直接上代码演示吧.....这么简单,指定第一个参数是后面参数的总数就可以了,这还不随随便玩
别着急,精彩的来了,「可变参数的应用」
可变参数应用:实现log打印
#include
#include <stdio.h