欢迎来真孝善网,为您提供真孝善正能量书籍故事!

深入解析:可变参数的应用与优化技巧

时间:11-18 神话故事 提交错误

#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)~(sizeof(int) - 1) )

#define va_start(ap,v) ( ap=(va_list)v + _INTSIZEOF(v) ) //第一个可选参数地址

#define va_arg(ap,t) ( *(t *)((ap +=_INTSIZEOF(t)) - _INTSIZEOF(t)) ) //下一个参数地址

#define va_end(ap) ( ap=(va_list)0 ) //使指针无效

使用

VA_LIST是C语言中解决可变参数问题的一组宏

VA_LIST的用法:

(1)首先在函数中定义一个VA_LIST类型变量。该变量是指向参数的指针。

(2)然后使用VA_START宏来初始化刚刚定义的VA_LIST变量。该宏的第二个参数是第一个可变参数的前一个参数,它是一个固定参数。

(3) 然后使用VA_ARG返回可变参数。 VA_ARG 的第二个参数是要返回的参数类型。

(4)最后使用VA_END宏结束变量参数的获取。然后您可以在函数中使用第二个参数。如果函数有多个可变参数,则依次调用VA_ARG获取各个参数。

(PS:哈哈哈,是不是很专业?我感觉13太多了,上面的原理和用法都是从网上抄来的)

我觉得原理和用法写得非常通俗易懂,至少我能看懂!

惯例:

写一个简单具体的代码给大家看,从而加深理解,学会应用。

- (void)mutableParamList:(NSString*)firstPara,

{

va_list 参数;

id 每个对象;

if(第一个Para) {

NSLog(@"1:%@",firstPara);

va_start(参数,firstPara);

while((eachObject=va_arg(参数,id))) {

NSLog(@"2:%@",eachObject);

}

va_end(参数);

}

}

用户评论

旧爱剩女

我记得小时候学过这个,可以用来传入多个参数到一个函数里面

    有17位网友表示赞同!

浅嫣婉语

太牛了!这样就能写出很多灵活的函数

    有10位网友表示赞同!

半世晨晓。

以前用固定参数写函数感觉很麻烦,现在可变参数va听起来轻松多了

    有9位网友表示赞同!

暖瞳

要是在实际项目中用上,效率肯定提高好多倍

    有14位网友表示赞同!

杰克

这个特性在一些通用性函数的设计上很有帮助

    有18位网友表示赞同!

醉枫染墨

好像有些编程语言不这么支持吧?

    有7位网友表示赞同!

青楼买醉

学习一下可变参数va,感觉以后写代码会更方便!

    有17位网友表示赞同!

逾期不候

想问问可变参数va的应用场景有哪些?

    有17位网友表示赞同!

高冷低能儿

这个概念还挺抽象的,需要好好琢磨一下

    有20位网友表示赞同!

煮酒

有没有具体的例子可以参考?

    有9位网友表示赞同!

炙年

我之前用其他方法替代过可变参数va,这个新知识点还是很有用的

    有14位网友表示赞同!

孤单*无名指

看起来学习起来不是很难的样子!

    有16位网友表示赞同!

墨染天下

在大型项目中,可以使用此特性简化很多代码块的编写

    有20位网友表示赞同!

陌上花

了解一下它的底层实现机制怎么样?

    有13位网友表示赞同!

如梦初醒

我最近也在学习相关的编程语言,这个可变参数va正好可以帮助我

    有6位网友表示赞同!

〆mè村姑

对于新手来说,应该先学会基础知识再来学习这一层级概念吧!

    有9位网友表示赞同!

你身上有刺,别扎我

可以用这个特性写出许多实用的工具函数啊!

    有5位网友表示赞同!

淡淡の清香

在实际开发过程中,使用可变参数可提高代码的通用性!

    有12位网友表示赞同!

早不爱了

之前没有想过这个问题,现在看来可变参数是一个很不错的思路

    有12位网友表示赞同!

【深入解析:可变参数的应用与优化技巧】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活