读书人

两段程序不一样为啥输出一样

发布时间: 2012-10-21 09:00:08 作者: rapoo

两段程序不一样,为什么输出一样?
程序一

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,跟他里面的值没关系,改变的只是地址而已。

读书人网 >C语言

热点推荐