当前位置:   article > 正文

cpp►变参函数与回调函数_cpp实现变参事件

cpp实现变参事件
  1. 变参函数
    与普通函数比较,定义形式不同,例如:
int printf(const char *format, ...);
  • 1

变参宏,即该宏可以接受可变数量的参数。stdarg.h 头文件为函数提供了一个类似的功能,但是用法比较复杂。必须按如下步骤进行:
1.提供一个使用省略号(一定是最后的参数)的函数原型;
2.在函数定义中创建一个va_list类型的变量;
3.用宏把该变量初始化为一个参数列表;
4.用宏访问参数列表;
5.用宏完成清理工作。

#include <stdio.h>
#include <stdarg.h>
double sum(int, ...);
int main(void) {
	double s, t;
	s = sum(3, 1.1, 2.5, 13.3);
	t = sum(6, 1.1, 2.1, 13.1, 4.1, 5.1, 6.1);
	printf("return value for "
			"sum(3, 1.1, 2.5, 13.3):       %g\n", s);
	printf("return value for "
			"sum(6, 1.1, 2.1, 13.1, 4.1, 5.1, 6.1): %g\n", t);
	return 0;
}5步曲↓↓↓↓↓】
double sum(int lim, ...) { ➊←[parmN]==lim,格式正确
	va_list ap; ➋←储存参数的对象[va_list]
	va_start(ap, lim); ➌←把ap通过[va_start]初始化为参数列表
	double tot = 0;
	for (int i = 0; i < lim; i++)
	    tot += va_arg(ap, double); ➍←通过[va_arg]访问参数列表中的每一项
	va_end(ap); ➎←通过[va_end]完成清理工作
	return tot;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
return value for sum(3, 1.1, 2.5, 13.3):         16.9
return value for sum(6, 1.1, 2.1, 13.1, 4.1, 5.1, 6.1):  31.6
  • 1
  • 2
  1. 回调函数
    与普通函数比较,调用过程不同,所谓的回调函数,指的是不直接在程序中显式地调用,而是通过调用其他函数反过来调用的函数。
#include <iostream>
void callback(void) {
	std::cout << "Hello, world.\n";
}
void print(void (*p)(void)) {
	p();
}
int main() {
	print(callback);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/573828
推荐阅读
相关标签
  

闽ICP备14008679号