有没有办法通过用户输入定义全局变量? 让我们说我用
#include...
#define N 12
double array[N][N];
void main();...
但我希望用户能够选择N是什么。 我是否必须将N作为局部变量或是否有解决方法(没有宏)? 我有一个非常小的程序,但有很多不同的变量需要N值。
可替换地, 有没有一种方法可以将一组变量发送到函数中,而不必每次都明确地将它们写出来。
例如
myfunction(var1,var2,var3...)
而是编写类似
的内容myfunction(Allvariables)
非常感谢您的回答! 这是一个很棒的论坛。
答案 0 :(得分:4)
int* data;
int main()
{
int n;
// get n from the user.
data = new int[n];
// use data.
.
.
delete[] data;
}
或者只是忘记指针,并使用矢量!
std::vector<int> data;
data.push_back(55);
// just push_back data!
=============================================== ========================
编辑:: 如果你想使用Edouard A.方式:)
#include <iostream>
#include <sstream>
#include <vector>
int main(int argc, char* argv[])
{
std::vector<double>::size_type dataSize = 0;
std::stringstream convertor(argv[1]);
{
if(argc > 1)
{
convertor >> dataSize;
if(convertor.fail() == true)
{
// do whatever you want here in case
// the user didn't input a number.
}
}
}
std::vector<double> data(dataSize);
// use the vector here.
return 0;
}
在这种情况下我更喜欢使用lexical_cast,但我不确定你是否有Boost。
#include <iostream>
#include <vector>
#include <boost/lexical_cast.hpp>
int main(int argc, char* argv[])
{
typedef std::vector<double>::size_type vectorSize;
if(argc < 2)
{
// err! The user didn't input anything.
}
vectorSize dataSize = boost::lexical_cast<vectorSize>(argv[1]);
std::vector<double> data(dataSize);
// use the vector here.
return 0;
}
答案 1 :(得分:2)
1 /是但您需要动态内存分配。程序参数作为argc和argv传递给主函数
int main(int argc, char **argv)
argc是参数的数量 argv是表示这些参数的空终止字符串数组
argv [0]是程序本身。
2 /你可以使用variadic function va_start&amp;类似,或者在结构中重写或分组数据并将其传递给函数
答案 2 :(得分:1)
不,这不可能这样做。您需要使用动态(运行时)内存分配( new [] )。要执行静态(编译时)内存分配,编译器需要在编译时知道内存块大小。
答案 3 :(得分:1)
我不确定您要对myFunction做什么,但听起来您想要查看创建a struct或传递std::vector
答案 4 :(得分:0)
创建一个类(或结构)AllVariables并传入它。
您没有说是否要在运行时或编译时定义N.如果要在编译时定义它,可以将N定义为编译器命令行参数。