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

定制建站费用3500元

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

成都品牌网站建设

品牌网站建设费用6000元

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

成都商城网站建设

商城网站建设费用8000元

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

成都微信网站建设

手机微信网站建站3000元

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

建站知识

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

C语言之认识可变参数-创新互联

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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:C语言之认识可变参数-创新互联
网页链接:http://bjjierui.cn/article/dsdjjj.html

其他资讯