当前位置:首页 科普知识 std

std

发布时间:2023-09-14 18:50:50

std_arg是一个函数。

std介绍

std_arg是一个函数。

std

“C语言”可变数目变元

宏va_arg()、va_start()和va_end()一起使用,便可以完成向函数传入数目可变的变元操作。取可变数目变元的典型例子是函数printf()。类型va_list是在中定义的。

上述的宏原型如下所示:

type va_arg(va_list argptr, type);

void va_end(va_list argptr);

void va_start(va_list argptr, last_parm);

它们都包含在头文件中。

创建一个能获取可变数目变元的函数的通用过程:在函数定义中,可变参数表之前必须有一个或多个已知参数,其中最右者为last_parm。在调用va_start()时,last_parm名被用作第二个参数。

使用任何可变长度的变元被访问之前,必须先用va_start()初始化变元指针argptr。初始化argptr后,经过对va_arg()的调用,以作为下一个参数类型的参数类型,返回参数。最后取完所有参数并从函数返回之前。必须调用va_end()。由此确保堆栈的正确恢复。

如果未正确使用va_end(),程序可能瘫痪。

例子:

用sum_series()求一系列的总和,sum_series()的第一个变元是数列项目数。本程序是求以下数列的前四项之和:

1/2+1/(2*2)+1/(2*2*2)...............

#include

#include

double sum_series(int num, ...);

std

int main()

{

double d;

d= sum_series(4, 0.5, 0.25, 0.125, 0.06254);

printf("Sum of series is %f.n", d);

return 0;

}

double sum_series(int num, ...)

{

double sum= 0.0, t;

va_list argptr;

va_start(argptr, num);

for(; num; num--)

{

t= va_arg(argptr, double);

sum= sum+ t;

std

}

va_end(argptr);

return sum;

}

温馨提示:
本文【std】由作者 爱百科 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6