2012-11-27 108 views
4

我想根据main()中的输入定义全局数组(在其他函数中使用)。(具体是数组大小)。 extern关键字没有帮助。在main()中定义全局变量

#include <iostream> 
    using namespace std; 

void gen_sieve_primes(void); 

int main() { 
    int MaxNum; 
    cin >> MaxNum; 
    int *primes = new int[MaxNum]; 
    delete[] primes; 
    return 0; 
} 
//functions where variable MaxNum is used 
+3

1)不要使用全局变量。 2)不要使用数组;而不是像'std :: vector'那样使用容器。 –

+1

你确定你想要一个数组而不是'std :: vector'吗? –

回答

2

声明它的主要外:

int maxNum; 
int main() { 
... 
} 

理想情况下,你不这样做的。全球化很少有用,几乎没有(或者更确切地说:从未)需要。

+0

对不起。拉尔森和佩尔森让我回答。但是,这是我的失败,你不明白我的代码(我已经在INT MaxNum之前,我不想要的)externtern – sjaustirni

+0

@Dundee顺便说一下,是否有任何理由,你不只是通过该数组(或更好,矢量)作为参数而不是全局? – Cubic

+0

我是C++的新手,所以我不这么做大项目 - 所以全局变量对我来说不是问题。但我知道更好的是不使用全局变量。我需要另外两个函数中的数组,所以我需要把它变成全局的。或者你有更好的解决方案如何做到这一点? – sjaustirni

4

在全球范围内

int MaxNum; 
int main(){ 
    cin >> MaxNum; 
} 
+0

这不回答问题。这是在全局范围内定义一个变量,而不是'main()'。 – Krii

2

只要定义声明它的主要功能的括号外的阵列。

#include <iostream> 
using namespace std; 
void gen_sieve_primes(void); 

(Declare the variables here!) 

int main() { 
    extern int MaxNum; 
    cin >> MaxNum; 
    int *primes = new int[MaxNum]; 
    delete[] primes; 
    return 0; 
} 
//functions where variable MaxNum is used 
+0

@Dundee我得到了我的+1,所以我很高兴谢谢:) – Aaron