网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

c语言可变长参数函数 c语言可变参数函数 例子

C语言 怎么调用一个可变参数的函数

你是指参数的个数可以变化? 比如文件操作函数fpritnf,它的参数是不确定的,可以是fprintf("%s%s","你好","他好");也可以是fprintf("%s%d%c","字符串",10086,'c'); 如果自己写一个参数变化的函数的话,呵呵,我没试过。

我们提供的服务有:网站设计制作、网站制作、微信公众号开发、网站优化、网站认证、楚雄州ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的楚雄州网站制作公司

关于在C语言 声明带有一个变长数组参数的函数

在C语言中,函数中要用数组做参数,可以采用三种方式,其中后两种均可适用于变长数组参数。

1 直接以定长数组做参数,声明形式为:

ret_type func(int a[100]);

这里就是以100个元素的数组做参数的。

2 声明时不带长度,即:

ret_type func(int a[]);

3 以指针替代数组,即:

ret_type func(int *a);

2,3两种均可以用于变长数组。不过这种情况下,需要与函数约定数组长度的确定方法,比如约定规模 ,约定结束值,增加额外参数传长度,在数组元素中包含长度,或采用全局变量传长度等等。

c语言传递变长参数

按照你现在给出的代码,

print2(3, 100, 1, 2, 3);

输出的是1 2 3加上一位不确定值

因为va_start(vl, n);这一步理论上可以得到以a开头的va_list指针,但实际上由于编译器优化,它的效果和va_start(vl, a);是相同的

这一点,你可以打印出指针地址来确定一下

从你的代码推测,你是想让print2打印出后四个参数,包括a在内

即 100 1 2 3

如果是这样 可以用另一种方式做到

print2中,不要调用va_start

而是直接 vl=a;

如下

void print2(int n, int a, ...)

{

va_list vl;

// va_start(vl, n);//使用倒数第二个有名变量

vl = a;//编译器想优化 不让。 直接强势插入

vprint(n+1, vl);

va_end(vl);

}

可以试一下是否是你需要的效果。 如果不是 再追问


当前标题:c语言可变长参数函数 c语言可变参数函数 例子
文章地址:http://bjjierui.cn/article/ddicdhd.html

其他资讯