函数参数后面的省略号是什么意思

2025-03-02 14:39:50
推荐回答(3个)
回答1:

这个是可变参数的用法。
va_list相关一般包含以下4个操作:
va_list XX //设定传入的参数的指针
va_start //初始化参数指针
va_arg //通过栈操作,根据偏移量读取参数值
va_end //参数读取完毕

va_start (pArgList, szFormat) ;
上面的szFormat就是初始的栈指针位置(第一个可变参数的首地址),以他为基准,进行偏移
例如:
va_arg( pArgList, unsigned long ) ;
那就是指以偏移unsigned long的siz,将其中的值作为参数。

可变参数的实现,其实是通过栈来实现的。

具体的细节原理,就不写了,你上网搜一下,挺多的。

回答2:

最后一个参数...

这是书本介绍这个函数,最后...,表示还有一些参数,(不只是一个),省略了,下面不谈最后的几个参数。它们与 函数返回:
MessageBox (NULL, szBuffer, szCaption, 0) ;
里的参数也无关。

回答3:

是不定参数的函数

比如标准C的printf()就是这样的函数

你用MSDN搜索va_list就能看到更详细的说明