2010-02-11 70 views
0

我有一些問題/誤解與C++數組。C++「動態」陣列

int myArray[30]; 
myArray[1]=2; 
myArray[2]=4; 

這是吐出了很多編譯器錯誤。我不認爲有必要將它們包括在內,因爲這對於每個有C(++)經驗的人來說都是一個簡單的問題。我想

  • 爲什麼不能正常工作?
  • 有沒有一種方法來創建一個「動態」的陣列上固定的值ammount的(所以沒有需要的malloc),但其中在運行時我可以改變的值?
+10

你想錯了 - 我們總是需要查看錯誤信息! – 2010-02-11 23:40:41

+1

這應該工作得很好(在正確的上下文中)。什麼是錯誤? – 2010-02-11 23:41:00

+2

當你問一個關於產生編譯器錯誤的代碼的問題時,它總是**是一個好主意,包括編譯器錯誤,儘管這可能是一件容易的事。如果不是爲了澄清問題,那麼爲了幫助其他人試圖在以後找到問題的答案。除了在編程時只顯示小代碼片段,很可能錯誤不在顯示的代碼中。 – 2010-02-11 23:41:52

回答

14

我猜你有一個函數的那個​​之外。

你能定義一個函數外部變量。你甚至可以在函數之外調用任意代碼,只要它是變量定義的一部分。

// legal outside of a function 
int myArray[30]; 

int x = arbitrary_code(); 

void foo() 
{ 

} 

但是你不能在函數外部有任意的語句或表達式。

// ILLEGAL outside a function 
myArray[1] = 5; 

void foo() 
{ 
    // But legal inside a function 
    myArray[2] = 10; 
} 
+4

哦,花哨的褲子去爲千里眼徽章。 :) – GManNickG 2010-02-11 23:42:54

+2

@GMan - 你讀了我的腦海:-) – 2010-02-11 23:51:47

2

你是說,這並不編譯:

int main() { 
    int myArray[30]; 
    myArray[1]=2; 
    myArray[2]=4; 
} 

如果沒有,你有你的編譯器的設置是錯誤的。正如我在評論中所說的,我們需要看到錯誤消息。

+0

原來你需要看到其他的源代碼。 – 2010-02-12 00:51:22