用C ++创建一个结构数组

时间:2011-08-30 05:57:04

标签: c++ arrays struct

我正在进行一项要求我使用“结构数组”的作业。我之前做了一次这个教授的另一个任务,使用这个代码:

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

这使得工作做得很好,但我得到了标记为数字全局的点。我该怎么办才能避免这种情况?我整个夏天都没有碰过C ++,所以我现在对它很生气,并且不知道从哪里开始这个。

3 个答案:

答案 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];
   ....

}