谁能分析一下这个程序的问题?(C++)

xinyucap2000 xinyucap2000 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是一个设计应用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




...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
xinyucap2000
非技术区 15,445 成员 58,111 内容