2014-09-04 61 views
-3

當數組大小是一個變量時,如何初始化數組的所有值爲零值?如何在C++中初始化變量大小的整數數組爲0?

int n; 
cin >> n; 
int a[n] = {0}; 

我試過上面的代碼,但它給出了一個錯誤。

+2

如果'n'不是'constexpr',這將無法編譯,但這是如何將數組的元素初始化爲零。 – 101010 2014-09-04 14:08:50

+2

請分享錯誤,以便我們幫助你。 – Mike 2014-09-04 14:10:02

+3

'std :: vector a(n);' – 2014-09-04 14:11:28

回答

1

變長數組不是有效的C++,儘管一些編譯器確實將它們實現爲擴展。

3

C++中不允許使用變量大小的數組。可變大小意味着在程序運行時可以改變大小。上面的代碼試圖讓用戶在運行時確定大小。

所以代碼不會編譯。

兩種選擇:

1. Use Vectors 

Example: 

    vector<int> a(n,0); 

2. Create variable arrays using dynamic memory allocation. 

    int*a; 
    int n; 
    cin >> n; 
    a = new int[n]; 
    for(int i = 0; i<n;i++) 
     *(a+i) = 0; 
    delete [] a; 
1
// Input n 
int n; 
cin>>n; 

// Declare a pointer 
int * a; 
// Allocate memory block 
a = new int[n]; 

/* Do stuff */ 

// Deallocate memory 
delete[] a; 

更多信息請參見this tutorial