可变参数函数的使用:va_start() , va_end() , va_list
2014-04-26 21:50
525 查看
#include <stdio.h> #include <stdarg.h> void arg_test(int i, ...); void arg_test1(int i , ...) ; int main() { //int int_size = _INTSIZEOF(int); //printf("int_size=%d\n", int_size); //arg_test(4,1,2,3,4); arg_test1(4,1,2,3,4); return 0; } void arg_test(int i, ...) { int j=0; va_list arg_ptr; va_start(arg_ptr, i); printf("&i = %p\n", &i);//打印参数i在堆栈中的地址 printf("arg_ptr = %p\n", arg_ptr); //打印va_start之后arg_ptr地址, //应该比参数i的地址高sizeof(int)个字节 //这时arg_ptr指向下一个参数的地址 j=*((int *)arg_ptr); printf("%d %d\n", i, j); j=va_arg(arg_ptr, int); printf("arg_ptr = %p\n", arg_ptr); //打印va_arg后arg_ptr的地址 //应该比调用va_arg前高sizeof(int)个字节 //这时arg_ptr指向下一个参数的地址 j=va_arg(arg_ptr, int); printf("%d %d\n", i, j); j=va_arg(arg_ptr, int); printf("%d %d\n", i, j); j=va_arg(arg_ptr, int); printf("%d %d\n", i, j); va_end(arg_ptr); } void arg_test1(int i , ...) { va_list ar_ptr ; va_start(ar_ptr , i) ; for(int n = 0 ; n < i ; ++ n) { int value = va_arg(ar_ptr , int) ; printf("%d\n" , value) ; } va_end(ar_ptr) ; }
相关文章推荐
- 函数可变参数va_list、va_start、va_arg、va_end原理及使用方法
- OC可变参数的函数实现va_start、va_end、va_list的使用
- 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
- 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
- va_start,va_arg,va_end,va_list应用举例--实现可变参数的函数
- OC可变參数的函数实现va_start、va_end、va_list的使用
- C语言可变参数函数及三个宏va_start、va_arg和va_end的使用
- C/C++中va_list,va_start,va_arg,va_end等可变参数宏的使用
- 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
- 函数可变参数深入分析之va_list、va_start、va_arg、va_end
- 【转】C++可变参数列表处理宏va_list、va_start、va_end的使用
- 函数的多个参数va_list, va_start, va_avg, va_end的使用
- va_start、va_end、va_list等可变参数的使用
- C,C++中使用可变参数[va_list、va_start(),va_end()和va_arg()]
- 可变参数函数分析(va_list,va_start(),va_end())
- C语言利用va_list、va_start、va_end、va_arg宏定义可变参数的函数
- C语言利用va_list、va_start、va_end、va_arg宏定义可变参数的函数
- 《C语言接口与实现》实验——可变参数表的使用(va_list, va_start, va_arg, va_end)
- 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
- C++可变参数列表处理宏va_list、va_start、va_end的使用