2014-02-09 24 views
-3

我的代碼是繼在數組如何初始化一個沒有任何錯誤的數組?

#include <iostream> 
using namespace std; 

int main(){ 
    int i; 
    int array[i]={1,2,3,4,5} 
    int temp; 
    for(int i=0;i<6;i++) 
    { 
      if(array[i]>temp) 
      temp=A[i]; 
      } 
      cout<<"the maximum number is "<<temp<<endl; 
      return 0; 
      } 

找到最大,但即時通訊在初始化數組的行收到錯誤,爲什麼會這樣呢?我們如何初始化數組?

+1

有什麼辦法'int數組[我] = {1,2,3,4 ,5}'是什麼意思? (並且,你忘了';') – elyashiv

+1

請閱讀本書的基礎知識,並閱讀有關初始化的內容。 'int i;'然後'int數組[i]'。你對陣列的期望大小是多少? – Nawaz

+0

'int array [i]'要麼正確初始化'i',要麼使用數字! –

回答

2

你不能用一個運行時變量定義數組的大小。

爲了解決這個問題,你可以使用constexpr

constexpr int i = 5; 
int array[i]={1,2,3,4,5}; 

或:

int array[]={1,2,3,4,5}; 

在後者的大小是由編譯器推斷。


否則,如果你需要一個運行時的大小,你將不得不使用std::vector或任何其他「動態」標準庫的容器:

int i = ...; 
std::vector<int> array(i); // reserve `i` cells 
1

所有變量i是第一未初始化

int i; 

所以它有一些任意的值。其次,定義數組的大小應該是一個常量exprssion。所以,即使我將這個定義初始化

int array[i]={1,2,3,4,5} 

也是無效的。此外,您忘記在右大括號後放置分號。

你也沒有初始化的變量temp

int temp; 

,並在循環

for(int i=0;i<6;i++) 

去年這個控制語句也是不正確的,因爲數組只有5個元素。

還有一標識符的未聲明

temp=A[i]; 

正確的代碼會像

#include <iostream> 
using namespace std; 

int main() 
{ 
    const int N = 5; 
    int array[N] = { 1, 2, 3, 4, 5 }; 
    int max = array[0]; 

    for (int i = 1; i < N; i++) 
    { 
      if (max < array[i]) max = array[i]; 
    } 

    cout << "the maximum number is " << max << endl; 
    return 0; 
} 
+0

甚至是int main(){std :: cout <<「,最大數字是」<< std :: max({1,2,3,4,5})<< std :: endl;返回0;'在C++ 11 :) – Jarod42

+0

@ Jarod42我認爲1)這是一個使用數組的賦值2)他對標準算法一無所知 –