首页 > 编程知识 正文

参变元与参变量的区别,参机变什么意思

时间:2023-05-04 10:37:12 阅读:143334 作者:4171

1 .概要va_list是在c语言中引入了解决自变量问题的宏,自变量问题是指自变量的数量不确定,或者每个自变量的类型不同。

头文件: #include stdarg.h 2 .使用过程va_list是一种字符指针类型,可以在代码中理解为当前参数集的指针。 介绍几个与va_list相关的常用函数

1. typedef char* va_list; 2.voidva_start(va_listAP,prev_param ); 初始化$va_list,并将ap指针指向参数列表中的第一个参数。 $第一个参数是va_list指针,第二个参数参数参数之前的变量,即'.'之前的参数3.voidva_end(va_listap ); 释放$指针,将输入的参数ap设置为NULL。 $通常,va_start和va_end成对出现。 4.typeva_arg(va_listAP,type ); $获取参数值,第一个参数ap指针,第二个参数要获取的值类型$返回此指定类型的值。 例如,假设ap指针指向参数表中的下一个参数。 (1)如果不能列出所有传递参数的数量和类型,请用省略号指定参数列表

voidprintint(intCNT,)2)使用va_list获取和处理参数

定义-va_list类型的变量,将va_list类型的变量定义为ap

调用va_start初始化ap,使其指向可变参数表中的第一个参数

使用va_arg获取参数并使用该参数

-获取所有参数后,关闭ap指针

voidprintint(intCNT,) { va_list ap; int value; VA_start(AP,cnt ); for(intI=0; i cnt; I ) value=va_arg(AP,int ); printf(%d(n ),value ); }va_end(AP ); (3)调用自变量函数

intmain(void ) ) printint ) 4、1、2、3、4; }输出结果如下。

1234函数参数的传递原理在此说明输出打印结果的理由。 涉及函数参数的传递原理。

在va_list的安装原理过程中,函数参数作为堆栈被访问,从右向左进行堆栈。

参数的内存存储格式:参数存储在内存的堆栈中,在执行函数时从末尾进入堆栈。 因此,堆栈底部的地址、顶部的地址。

使用va_arg函数检索时从堆栈顶部开始,因此上例中检索的第一个参数为1。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。