我正在进行一项要求我使用“结构数组”的作业。我之前做了一次这个教授的另一个任务,使用这个代码:
struct monthlyData {
float rainfall;
float highTemp;
float lowTemp;
float avgTemp;
} month[12];
这使得工作做得很好,但我得到了标记为数字全局的点。我该怎么办才能避免这种情况?我整个夏天都没有碰过C ++,所以我现在对它很生气,并且不知道从哪里开始这个。
答案 0 :(得分: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
}
答案 1 :(得分:2)
好吧,你可以只在需要它的方法中声明数组:)
struct monthlyData
{
float rainfall;
float highTemp;
float lowTemp;
float avgTemp;
};
int main()
{
monthlyData month[12];
}
如果你还需要从另一个方法使用它,你可以将它作为方法参数传递。
答案 2 :(得分:0)
首先声明结构
struct monthlyData {
float rainfall;
float highTemp;
float lowTemp;
float avgTemp;
};
然后使用例如
void foo()
{
struct monthlyData months[12];
....
}