Reputation: 1509
I'm working on an assignment that requires me to use an "array of structs". I did this once before for another assignment for this prof, using this code:
struct monthlyData {
float rainfall;
float highTemp;
float lowTemp;
float avgTemp;
} month[12];
Which got the job done fine, but I got points marked off for the array being global. What should I do instead to avoid that? I haven't touched C++ at all over the summer, so I'm pretty rusty on it at the moment and have no clue where to start for this one.
Upvotes: 3
Views: 36294
Reputation: 361442
Simply define the struct as:
struct monthlyData {
float rainfall;
float highTemp;
float lowTemp;
float avgTemp;
};
And then create an array of this struct, in a function, where you need it:
void f() {
monthlyData month[12];
//use month
}
Now the array is not a global variable. It is a local variable, and you've to pass this variable to other function(s) so that other function(s) can use the same array. And here is how you should pass it:
void otherFunction(monthlyData *month) {
// process month
}
void f() {
monthlyData month[12];
// use month
otherFunction(month);
}
Note that otherFunction
assumes that the size of array is 12
(a constant value). If the size can be anything, then you can do this instead:
void otherFunction(monthlyData *month, int size) {
// process month
}
void f() {
monthlyData month[12];
// use month
otherFunction(month, 12); //pass 12 as size
}
Upvotes: 5
Reputation: 44605
well, you can have the array declared only inside the method that needs it :)
struct monthlyData
{
float rainfall;
float highTemp;
float lowTemp;
float avgTemp;
};
int main()
{
monthlyData month[12];
}
and if you need to use it also from another method, you pass it around as method parameter.
Upvotes: 2
Reputation: 59997
Declar the struct first
struct monthlyData {
float rainfall;
float highTemp;
float lowTemp;
float avgTemp;
};
Then use e.g.
void foo()
{
struct monthlyData months[12];
....
}
Upvotes: 0