2011-08-30 86 views
3

我正在處理一項任務,需要我使用「結構數組」。我曾經這樣做過的另一項任務此教授,使用此代碼:在C++中創建一個結構數組

struct monthlyData { 
    float rainfall; 
    float highTemp; 
    float lowTemp; 
    float avgTemp; 
} month[12]; 

哪些做了精細的工作,但我得到了標記關閉數組是全球百分點。我應該怎麼做才能避免這種情況?今年夏天我還沒有碰過C++,所以我現在很生疏,並且不知道該從哪裏開始。

+0

請添加作業標籤。 – 2011-08-30 05:59:39

+1

你有沒有線索,因爲你不知道任何其他類型的變量,除了全球的變量? – Sean

回答

4

簡單地定義結構爲:

struct monthlyData { 
    float rainfall; 
    float highTemp; 
    float lowTemp; 
    float avgTemp; 
}; 

然後創建這個結構的陣列,在功能,在你需要它:

void f() { 
    monthlyData month[12]; 
    //use month 
} 

現在數組是不是一個全局變量。它是一個局部變量,並且您必須將此變量傳遞給其他函數,以便其他函數可以使用相同的數組。這裏是你如何把它傳遞:

void otherFunction(monthlyData *month) { 
    // process month 
} 

void f() { 
    monthlyData month[12]; 
    // use month 
    otherFunction(month); 
} 

注意otherFunction假設數組的大小是12(恆定值)。如果大小可以是任何東西,那麼你就可以做到這一點,而不是:

void otherFunction(monthlyData *month, int size) { 
    // process month 
} 

void f() { 
    monthlyData month[12]; 
    // use month 
    otherFunction(month, 12); //pass 12 as size 
} 
0

Declar的結構第一

struct monthlyData { 
    float rainfall; 
    float highTemp; 
    float lowTemp; 
    float avgTemp; 
}; 

然後例如使用

void foo() 
{ 
    struct monthlyData months[12]; 
    .... 

} 
2

很好,你可以宣佈只需要在方法內部數組吧:)

struct monthlyData 
{ 
    float rainfall; 
    float highTemp; 
    float lowTemp; 
    float avgTemp; 
}; 

int main() 
{ 

    monthlyData month[12]; 

} 

,如果你也需要使用它的另一種方法,你身邊把它作爲方法的參數。

相關問題