从品牌网站建设到网络营销策划,从策略到执行的一站式服务
printf()的原型是int printf(const char *fmt, ...);后面三个 . 表示C语言的变参。
创新互联公司专注于神池网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供神池营销型网站建设,神池网站制作、神池网页设计、神池网站官网定制、微信小程序开发服务,打造神池网络公司原创品牌,更为您提供神池网站排名全网营销落地服务。那么什么是变参?它有什么功能和作用呢?
变参就是参数不确定,可以随意根据需要来改变的参数。
我们先举一个固定参数列表的函数:
int swap(int a,int b)
{
int c;
c=a;
a=b;
b=c;
return a;
}
这是随便写的一个函数,虽然由于里面全都是局部变量的原因所以并不能交换参数,但是这个函数的形式还是挺不错的。
再举例一个可变参数列表函数:
void names(int a , ...)
{
……
}
反正只是定义一个而已,里面的内容就省略了。大家可以看到,下一个参数可以是任意的参数,但是局部变量可知,所有参数的值在调用时要被复制给栈中的连续内存,所以必须有一个普通变量来寻址后续的可变参数的类型和地址。
也就是说,在使用C语言的变参时,需要将变参,也就是...放在最后一个参数的位置,并且变参前面至少要有一个普通的参数。
这里有一个例子:
#include
#include
void func1(const char * str1, ...)
{
char *pp;
pp = ((char*)&str1) + sizeof(str1);
printf("%d\n", *(int*)pp);
pp = pp + sizeof(int);
printf("%d\n", *(int*)pp);
pp = pp + sizeof(int);
printf("%s\n", *((char**)pp));
}
int main()
{
func1("%d %d %s\n", 4, 5, "hello world");
return 0;
}
这个函数其实是不对的,原因就是里面存在内存对齐这个问题,但是作为认识和了解可变参数已经足够了。
这里的const char * str1实际上指向了一个待打印输出的字符串。
现在先了解到这里,以后真正用到的时候再详细讨论。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图