Как передать динамический массив в другую функцию?
Объясните, пожалуйста, каким образом я могу передать динамический масив в функцию DisplayCountries?
const int n_Country = 2;
struct Country
{
char name[100];
char capital[100];
int population;
double area;
};
int main() {
Country* List;
List = new Country[n_Country];
for (int i = 0; i < n_Country; i++)
{
cout << "Name = ";
cin >> List[i].name;
cout << "Capital " << endl;
cin >> List[i].capital;
cout << "Population " << endl;
cin >> List[i].population;
cout << "Area " << endl;
cin >> List[i].area;
}
}
void DisplayCountries() {
cout << "--------- Result ---------------";
for (int i = 0; i < n_Country; i++)
{
cout << List[i].name << ", " << List[i].capital << ", " << List[i].population << ", " << List[i].area << endl;
}
}
Ответы (1 шт):
Автор решения: HMS_TRINIDAD
→ Ссылка
Просто немного отредактировал Ваш код:
const int n_Country = 2; //глобальная переменная
struct Country
{
char name[100];
char capital[100];
int population;
double area;
};
void DisplayCountries(Country *List); //описание функции
int main() {
Country* List;
List = new Country[n_Country];
for (int i = 0; i < n_Country; i++)
{
cout << "Name = ";
cin >> List[i].name;
cout << "Capital " << endl;
cin >> List[i].capital;
cout << "Population " << endl;
cin >> List[i].population;
cout << "Area " << endl;
cin >> List[i].area;
}
DisplayCountries(List);
}
void DisplayCountries(Country *List) //определение функции
{
cout << "--------- Result ---------------";
for (int i = 0; i < n_Country; i++)
{
cout << List[i].name << ", " << List[i].capital << ", " << List[i].population << ", " << List[i].area << endl;
}
}
Размер в Вашем случае в функцию передавать не надо, тк у Вас размер - глобальная переменная. +Вам в комментарии уже показали, что функцию вывода надо сперва описать (тк она находится после функции main, из которой Вы её вызываете, она должна быть описана (или определена) до функции main, но после структуры, тк она выводит элементы типа этой структуры). Но вообще - это не лучший код, он компилируется - да, но вместо глобальной переменной лучше делать так, как Вам предложили в комментарии