谁能分析一下这个程序的问题?(C++)
这是一个设计应用C++中函数参数个数不定的程序,代码如下:
#include <iostream>
#include <cstdarg>
// A function with a variable argument
// list.
void Presidents(int n, ...)
{
std::va_list ap;
va_start(ap, n);
while (n--)
{
char* nm = va_arg(ap, char*); // char* argument.
int year = va_arg(ap, int); // int argument.
std::cout << year << ' ' << nm << std::endl;
}
va_end(ap);
}
// The main() function.
int main()
{
Presidents(5, "Carter", 1976, "Reagan", 1980,
"Bush", 1988, "Clinton", 1992,
"??", 2000);
return 0;
}
它将输出:
1976 Carter
1980 Reagan
1988 Bush
1992 Clinton
2000 ??
问题是 如果在下面这两行
char* nm = va_arg(ap, char*); // char* argument.
int year = va_arg(ap, int); // int argument.
后面加
float salary = va_arg(ap,float);
并在下面的输出语句中加上输出salary的内容,
并在调用Presidents函数中分别配上5个float型数值。
但是,编译器直接显示的是Access violation,程序无法运行,这不是语法的问题。
因为如果将float换成int,double,char型数据都没有问题。
敬请赐教。
可以与下面的邮箱联系:xinyucap@163.com