[c/c++]可变参数加法

简介: p.s. 无聊研究了一下这个函数声明:int add(int count, ...);调用范例:add(5, 1, 2, 3, 4, 5);代码如下:int add(int count, .
p.s. 无聊研究了一下这个
函数声明:
int add(int count, ...);
调用范例:
add(5, 1, 2, 3, 4, 5);
代码如下:
int add(int count, ...)
{
  va_list va;
  va_start(va, count);
  int sum = 0;
  for(int i = 0; i < count; i++)
    sum += va_arg(va, int);
  va_end(va);
  return sum;
}
其实可以不用va宏,前提是你要熟悉堆栈结构:
int add(int count, ...)
{
	
  char *p = (char *)&count;
  p += sizeof(count);
  int sum = 0;
  for(int i = 0; i < count; i++)
  {
    sum += *(int *)p;
    p += sizeof(int);
  }
  return sum;
}
相关文章
|
安全 JavaScript Java
C++11:可变参数模板
C++11:可变参数模板
|
存储 C++
【C++】可变参数模板使用总结(简洁易懂,详细,含代码演示)
【C++】可变参数模板使用总结(简洁易懂,详细,含代码演示)
|
存储 编译器 C语言
【C++11特性篇】模板的新一力将:可变参数模板 [全解析]
【C++11特性篇】模板的新一力将:可变参数模板 [全解析]
|
机器学习/深度学习 编译器 C++
C++11:类的新功能和可变参数模板
C++11:类的新功能和可变参数模板
174 1
|
存储 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(下)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
193 5
|
存储 算法 程序员
C++ 11新特性之可变参数模板
C++ 11新特性之可变参数模板
155 0
|
算法 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(中)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
149 2
|
算法 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(上)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
176 1
|
算法 编译器 C++
【C++入门到精通】新的类功能 | 可变参数模板 C++11 [ C++入门 ]
【C++入门到精通】新的类功能 | 可变参数模板 C++11 [ C++入门 ]
151 1
|
存储 安全 C语言
C++中灵活 处理可变参数的多种方式:优缺点、应用场景及示例对比
C++中灵活 处理可变参数的多种方式:优缺点、应用场景及示例对比
303 1

热门文章

最新文章