谁能分析一下这个程序的问题?(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
#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
...全文
相关推荐
使用C++的类建立一个简单的卖玩具的程序
使用C++的类建立一个简单的卖玩具的程序。类内必须具有玩具单价,售出数量以及每种玩具售出的总金额等数据,<br>为该类建立一些必要的函数,并在主程序中使用建立若干个带有单价和售出数量的对象,显示每种玩具售出的总金额。
使用docker部署一个简单的c/c++程序的方法
一、首先建立一个 hello-world.cpp 文件 程序代码如下: #include using namespace std; int main () { cout << hello-world << endl; cout << my first docker << endl; return 0; } 例如我是在我的home路径下建立一个DockerFile/hello-world目录,里面新建一个hello-world.cpp源文件。 二、编写DockerFile文件 该文件和源文件在一个文件夹下,如上图所示,名为hello-dockerfil
log4cpp--C++的一个强大的日志管理类(log4j很相似)使用示例
这个源文件展示了C++下的日志管理类log4cpp的使用方法,当然log4cpp是一个很强大的管理工具,所以只是演示了一些最常用的方法。
一个完整C++ 类实现简单代码
一个完整描述类实现的代码,语句有具体描述,适合初学者加深对类的认知,包含构造函数和析构函数的实现,代码是在VS2010环境下编写。
简单c++程序代码
新手入门练手的一些c++程序代码。


非技术区
