#include <iostream> #include <stdarg.h> //可变参数的支持 using namespace std; void add(int count,...){ va_list vp; va_start(vp, count); // 取出可变参数的一个值 int number = va_arg(vp, int); cout << number << endl; // 取出可变参数的一个值 number = va_arg(vp, int); cout << number << endl; // 取出可变参数的一个值 number = va_arg(vp, int); cout << number << endl; // 越界之后取出来的是0 number = va_arg(vp, int); cout << number << endl; // 关闭阶段 va_end(vp); } int main() { add(546, 6,7,8); return 0; }
日志输出:
/home/ms/workspace/study/ndk/CPlusStudy/cmake-build-debug/CPlusStudy
可变参数输出
6
7
8
0
项目中的应用:
int add(int count,...){ va_list va; va_start(va,count); for (int i = 0; i < count; ++i) { int number=va_arg(va,int); cout << number << endl; } va_end(va); } int main() { std::cout << "可变参数输出" << std::endl; add(3, 6,7,8); return 0; }
日志输出:
可变参数输出
6
7
8
第一个参数count可以作为可变参数的数量。
class Douluo { public: // static char * name="唐三"; 静态变量不能直接初始化 编译不通过 static char * name; Douluo() { // name="唐三"; //静态变量不能在构造方法初始化 } static void update() { // name="唐三"; //静态变量不能在静态方法初始化 cout<<"name="<<name<<endl; } void update2() { // 运行报错 // name="唐三"; //静态变量不能在非静态方法初始化 } }; /*静态变量正确初始化姿势*/ char* Douluo::name="唐三"; int main() { // std::cout << "可变参数输出" << std::endl; // add(3, 6,7,8); std::cout << "static的应用" << std::endl; Douluo douluo; // Douluo::name="唐三"; //静态变量不能在main方法初始化 会报错 douluo.update2(); Douluo::update(); // 类名::可以调用静态函数 调用静态方法的正确姿势 return 0; }
通过实际操作可知: