在 C++ 中创建结构数组

Sno*_*rog 3 c++ arrays struct

我正在处理一项要求我使用“结构数组”的作业。我之前为该教授的另一项作业做过一次,使用以下代码:

struct monthlyData {
    float rainfall;
    float highTemp; 
    float lowTemp;  
    float avgTemp;  
} month[12];
Run Code Online (Sandbox Code Playgroud)

这让工作做得很好,但我得到了标记为全局数组的分数。我应该怎么做才能避免这种情况?整个夏天我都没有接触过 C++,所以我现在对它很生疏,不知道从哪里开始。

Naw*_*waz 5

只需将结构定义为:

struct monthlyData {
    float rainfall;
    float highTemp; 
    float lowTemp;  
    float avgTemp;  
};
Run Code Online (Sandbox Code Playgroud)

然后在需要它的函数中创建此结构的数组:

void f() {
    monthlyData month[12];
    //use month
}
Run Code Online (Sandbox Code Playgroud)

现在数组不是全局变量。它是一个局部变量,您必须将此变量传递给其他函数,以便其他函数可以使用相同的数组。这是你应该如何通过它:

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

void f() {
    monthlyData month[12];
    // use month
    otherFunction(month);
}
Run Code Online (Sandbox Code Playgroud)

请注意,otherFunction假设数组的大小为12(常量值)。如果大小可以是任何大小,那么您可以这样做:

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

void f() {
    monthlyData month[12];
    // use month
    otherFunction(month, 12); //pass 12 as size
}
Run Code Online (Sandbox Code Playgroud)