两段程序不一样,为什么输出一样?
程序一
- C/C++ code
#include<stdio.h>#include<stdlib.h>#include<stdarg.h>void test( int a[ ],...){ va_list var_arg; a++; //这是程序一多一句话 va_start( var_arg, a ); printf("%d\n",va_arg( var_arg, int )); va_end( var_arg );}int main( void ){ int a[ 3 ] ={ 1, 2, 3 }; int b = 4; test( a, b ); getchar( );}
程序二
- C/C++ code
#include<stdio.h>#include<stdlib.h>#include<stdarg.h>void test( int a[ ],...){ va_list var_arg; va_start( var_arg, a ); printf("%d\n",va_arg( var_arg, int )); va_end( var_arg );}int main( void ){ int a[ 3 ] ={ 1, 2, 3 }; int b = 4; test( a, b ); getchar( );}
输出都是4,why?
[解决办法]
因为a是以个数组,a++表示的是a的地址加1,跟他里面的值没关系,改变的只是地址而已。