C/C++/OC 函数N个参数传递

C/C++/OC 函数N个参数传递,使用省略号代替

机制:函数参数是右向规则,在编译时,函数参数是从右向左写入堆栈中,从栈底低地址到栈顶高地址,如:func(int x, int y, int z); 写入顺序z -> y -> x,栈中是 x -> y -> z。

C/C++ 实现:

 1 #include <iostream>
 2 #include <stdarg.h>
 3 
 4 /**
 5  * @brief : 函数传递N个参数
 6  * @param : ...
 7  * PS: 在参数中,必须有参数结束标志。
 8  */
 9 void func(char *first, ...);
10 void func(char *first, ...)
11 {
12     va_list ap;
13     va_start(ap, first);
14     char *arg = NULL;
15     while((arg = va_arg(ap, char *)) != NULL)
16     {
17          std::cout << "param list : " << *arg << std::endl;
18     }
19     
20     va_end(va);
21 }
22 
23 int main()
24 {
25     char *first = "first";
26     char *second = "second";
27     char *third = "third";
28     // 必须以NULL为参数结束标志,在实现中就是以NULL为标志
29     func(first, second, third, NULL);
30 
31     return 0;
32 }

 

PS:

  1. 引入stdarg.h头文件
  2. 获取参数方法
    1 type va_arg(va_list ap, type);
    2 void va_start(va_list ap, next_param_ptr);
    3 void va_end(va_list ap);

     

     

OC 实现

转载于:https://www.cnblogs.com/naray/p/4427397.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值