为了账号安全,请及时绑定邮箱和手机立即绑定

请问各位大神,c++如何为定义不确定变量类型的参数?

请问各位大神,c++如何为定义不确定变量类型的参数?

C++
手掌心 2019-07-07 08:04:37
如图,我应该怎么定义main函数里面的number1和number2
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞


你这是不可能,也不符合理论的。理由是:
number1和number2的类型必须确定,当cin读入数据后存入变量时,变量的内存应该已经分配,如果类型未知那么意味编译器无法知道内存大小。即使C++11标准的auto应该也不行,因为你的写法是定义性声明,定义意味着分配内存,这时如果还未看见变量的样子,auto应该都是无法工作的。由于手头暂时不能使用VS,故未尝试,但不认为auto能工作。
一种可能的解决方案是,你按照字符串方式读入数据(string或者char[]),然后自己编写中间代码解析字符串,毕竟不同的数据类型会有不同的外在特征。


查看完整回答
反对 回复 2019-07-08
?
湖上湖

TA贡献2003条经验 获得超2个赞

来自电脑网络类芝麻团 推荐于2016-04-12

可以都是double,或者都是int
也可以一个int,一个double,甚至还可以是其它类型。
demo.get(number1,number2);时,它会自动匹配,可能完全匹配,也可能是向上匹配,如若是,int,char那么会升级成int,int
同理,int ,double会变成double ,double


查看完整回答
反对 回复 2019-07-08
?
交互式爱情

TA贡献1712条经验 获得超3个赞



c++怎样编写不确定参数个数的函数

C++定义的函数是可以支持函数参数个数不确定的。VA_LIST是在C++语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数同时使用...代替多个参数,调用时只需要根据需要传入多个参数。

VA_LIST的用法:

  1. 首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;

  2. 然后用VA_START宏初始化刚定义的VA_LIST变量;

  3. 然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);

  4. 最后用VA_END宏结束可变参数的获取。

参考代码:求多个数得平均值

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <cstdarg>

#include <iostream>

using namespace std;

double average ( int num, ... )

{

  va_list arguments;                     // A place to store the list of arguments

  double sum = 0;

  va_start ( arguments, num );           // Initializing arguments to store all values after num

  for ( int x = 0; x < num; x++ )        // Loop until all numbers are added

    sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum.

  va_end ( arguments );                  // Cleans up the list

  return sum / num;                      // Returns some number (typecast prevents truncation)

}

int main()

{

  cout<< average ( 3, 12.2, 22.3, 4.5 ) <<endl;

  cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <<endl;

}


 


查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 2557 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信