收藏此站 联系我们 网站
当前位置:首页» 网络推广 » 【建站服务】六盘水网页设计-高端网站设计公司-域名申请

【建站服务】六盘水网页设计-高端网站设计公司-域名申请

作者: 风兰 . 阅读量: 5 . 发表时间:2022-09-21 03:02:36

网站建设

上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


六盘水网页设计-高端网站设计公司


网站建设.png

可变参数

有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定义。

int func(int, ... ) {   .   .   .} int main(){   func(2, 2, 3);   func(3, 2, 3, 4);}

请注意,函数 func() 最后一个参数写成省略号,即三个点号(...),省略号之前的那个参数是 int,代表了要传递的可变参数的总数。为了使用这个功能,您需要使用 stdarg.h 头文件,该文件提供了实现可变参数功能的函数和宏。具体步骤如下:

  • 定义一个函数,最后一个参数为省略号,省略号前面可以设置自定义参数。

  • 在函数定义中创建一个 va_list 类型变量,该类型是在 stdarg.h 头文件中定义的。

  • 使用 int 参数和 va_start 宏来初始化 va_list 变量为一个参数列表。宏 va_start 是在 stdarg.h 头文件中定义的。

  • 使用 va_arg 宏和 va_list 变量来访问参数列表中的每个项。

  • 使用宏 va_end 来清理赋予 va_list 变量的内存。

现在让我们按照上面的步骤,来编写一个带有可变数量参数的函数,并返回它们的平均值:

实例

#include <stdio.h>#include <stdarg.h> double average(int num,...){    va_list valist;    double sum = 0.0;    int i;    /* 为 num 个参数初始化 valist */    va_start(valist, num);    /* 访问所有赋给 valist 的参数 */    for (i = 0; i < num; i++)    {       sum += va_arg(valist, int);    }    /* 清理为 valist 保留的内存 */    va_end(valist);    return sum/num;} int main(){   printf("Average of 2, 3, 4, 5 = %fn", average(4, 2,3,4,5));   printf("Average of 5, 10, 15 = %fn", average(3, 5,10,15));}


tf("Average of 5, 10, 15 = %f ", average(3, 5,10,15));

}

当上面的代码被编译和执行时,它会产生下列结果。应该指出的是,函数 average() 被调用两次,每次第一个参数都是表示被传的可变参数的总数。省略号被用来传递可变数量的参数。


Average of 2, 3, 4, 5 = 3.500000

Average of 5, 10, 15 = 10.000000

一、可变参数


#include <stdio.h>


void debug_arg(unsigned int num, ...) 

{

    unsigned int i = 0;

    unsigned int *addr = &num;

    for (i = 0; i <= num; i++) 

    {

        /* *(addr + i) 从左往右依次取出传递进来的参数,类似于出栈过程 */

        printf("i=%d,value=%d ", i, *(addr + i));

    }

}

int main(void)

{

    debug_arg(3, 66, 88, 666);

    return 0;

}

可变参数的工作原理,以32位机为例:


 1.函数参数的传递存储在栈中,从右至左压入栈中,压栈过程为递减。

 2.参数的传递以4字节对齐,float/double这里不讨论。

oscarwpm

   oscarwpm


  103***7177@qq.com


5年前 (2017-03-26)

六盘水网页设计-高端网站设计公司


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务