首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于可变参数的有关问题

2012-02-13 
关于可变参数的问题今天看了可变参数,void max(int n,...),也大概知道了他的实现,但是我有一点很迷惑,就是

关于可变参数的问题
今天看了可变参数,void max(int n,...),也大概知道了他的实现,但是我有一点很迷惑,就是:可不可以将 int n也省去了,就是变成 int max(...),但是va_start宏又不允许,不知道是不是可以这样用,或者这是完全错误的!大虾们,帮帮忙吧,郁闷死了!

[解决办法]
下面的函数求所有参数之和,约定所有的参数类型为int,且不能为0,最后一个为零表示参数结束,
VC6。VC6以后的就不行了,因为以后的版本在本地变量和ebp值之间加了防溢出的cookie字节。
正如楼上所说,只能在特定的情况下使用。

C/C++ code
int func(...){    int n=0;    int *p=&n;    p+=2;    while(*p!=0)        n+=(*p),p++;    return n;}int main(void){    int n=func(2,3,0);    printf("%d",n);    system("pause");    return 0;} 

热点排行