C++ C+中的全局变量+;

C++ C+中的全局变量+;,c++,global-variables,C++,Global Variables,我应该写一个程序,从main()部分的输入数字中读取数据,然后在其他bool函数中进行一些计算。我不想每次调用函数时都在函数中插入整个数字数组和所有其他参数 我的问题是:我能在C++中以某种方式读取输入,但以某种方式(主(外)之外的其他函数”也将“知道”这些变量以及里面的内容,所以在调用函数时,我不必提出很多参数? 代码如下: #include <iostream> using namespace std; inline bool del(int n) { int i;

我应该写一个程序,从main()部分的输入数字中读取数据,然后在其他bool函数中进行一些计算。我不想每次调用函数时都在函数中插入整个数字数组和所有其他参数

我的问题是:我能在C++中以某种方式读取输入,但以某种方式(主(外)之外的其他函数”也将“知道”这些变量以及里面的内容,所以在调用函数时,我不必提出很多参数?

代码如下:

#include <iostream>
using namespace std;

inline bool del(int n)
{
    int i;
    for(i=0;i<s1;i++)
    {
        if((n % a[i]) == 0) return true;
    }
    return false;
}
inline bool ned(int n)
{
    int i;
    for(i=0;i<s2;i++)
    {
        if((n % b[i]) != 0) return true;
    }
    return false;
}
int main(void)
{
    int s1, s2, a[25], b[25];
        int m, n, i, k=0;
    bool d, nd;
    cin >> s1 >> s2 >> m >> n;
    for(i=0;i<s1;i++)
        cin >> a[i];
    for(i=0;i<s2;i++)
        cin >> b[i];
    for(i=m;i<=n;i++)
    {
        d = del(i);
        nd = ned(i);
        if(d == true && nd == true) ++k;
    }
    cout << k << endl;
    return 0;
}
#包括
使用名称空间std;
内联布尔德尔(整数n)
{
int i;
对于(i=0;i s1>>s2>>m>>n;
对于(i=0;i>a[i];
对于(i=0;i>b[i];

因为(i=m;i因此,将变量设置为全局变量是个坏习惯。要么将数组传递给函数,要么将整个对象设置为对象,并将数组和函数设置为类的成员。这就是OOP的意义所在。

您的声明不是全局的,只需移动a[25]和b[25]的声明即可在main之外。

您想要的只是将变量放在全局范围内。我不知道“未在此范围内声明”错误是什么意思,因为以下操作很好:

#include <iostream>
using namespace std;

    int s1, s2, a[25], b[25];

inline bool del(int n)
{
int x = s1 + s2;
    int i;
    for(i=0;i<s1;i++)
    {
        if((n % a[i]) == 0) return true;
    }
    return false;
}
inline bool ned(int n)
{
    int i;
    for(i=0;i<s2;i++)
    {
        if((n % b[i]) != 0) return true;
    }
    return false;
}
int main(void)
{
        int m, n, i, k=0;
    bool d, nd;
    cin >> s1 >> s2 >> m >> n;
    for(i=0;i<s1;i++)
        cin >> a[i];
    for(i=0;i<s2;i++)
        cin >> b[i];
    for(i=m;i<=n;i++)
    {
        d = del(i);
        nd = ned(i);
        if(d == true && nd == true) ++k;
    }
    cout << k << endl;
    return 0;
}
#包括
使用名称空间std;
int s1,s2,a[25],b[25];
内联布尔德尔(整数n)
{
int x=s1+s2;
int i;
对于(i=0;i s1>>s2>>m>>n;
对于(i=0;i>a[i];
对于(i=0;i>b[i];

对于(i=m;我非常感谢您的建议!对象是一种方法,在main中调用一个名为obj.readInput()的函数,您已经满足了“从main()中的输入数字读取”这一相当虚假的要求