标签:style blog http color os 使用 io strong for
#include <stdio.h> void fun(int n,...) { int *temp=&n; temp++; for(int i=0;i<n;i++) { printf("%d\n",*temp); temp++; } } int main() { int a=1,b=2,c=3,d=4; fun(4,a,b,c,d); return 0; }
二、使用va_start,va_arg,va_end
#include <stdio.h> #include <stdarg.h> void fun(int n,...) //变参函数,C++里也有 { int temp,i; va_list ap; //step1:va_list类型数据可以保存函数的所有参数,做为一个列表一样保存 va_start(ap,n); //step2:对ap 进行初始化,让ap指向可变参数表里面的第一个参数(最后一个固定参数后的可变参数) for(i=0;i<n;i++) { temp=va_arg(ap,int); //step3:把 ap 的位置指向变参表的下一个变量位置 printf("%d\n",temp); } va_end(ap); //step4:关闭ap指针 } int main() { int a=1,b=2,c=3,d=4; fun(4,a,b,c,d); return 0; }
栈底 高地址 | ....... | 函数返回地址 | ....... | 函数最后一个参数 | .... | 函数第一个可变参数 <--va_start后ap指向 | 函数最后一个固定参数 | 函数第一个固定参数 栈顶 低地址
int main(void) { int a=0,b=0; b=((a+=1)-1); printf("a:%d,b:%d\n",a,b); b=((a+=1)-1); printf("a:%d,b:%d",a,b); return 0; }
标签:style blog http color os 使用 io strong for
原文地址:http://www.cnblogs.com/elie/p/3933431.html