我正在处理一项要求我使用“结构数组”的作业。我之前为该教授的另一项作业做过一次,使用以下代码:
struct monthlyData {
float rainfall;
float highTemp;
float lowTemp;
float avgTemp;
} month[12];
Run Code Online (Sandbox Code Playgroud)
这让工作做得很好,但我得到了标记为全局数组的分数。我应该怎么做才能避免这种情况?整个夏天我都没有接触过 C++,所以我现在对它很生疏,不知道从哪里开始。
只需将结构定义为:
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)