设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。
//使用结构体进行结构数据排列
#include<iostream>
#include<string>
using namespace std;
struct hero
{
string name;
int age;
string sex;
};
void pailie(hero s[], int n)
{
hero temp;
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (s[i].age < s[j].age)
{
temp = s[j];
s[j] = s[i];
s[i] = temp;
}
}
}
for (int i = 0; i < n; i++)
{
cout << s[i].name << ' ' << s[i].age << ' ' << s[i].sex << endl;
}
}
int main()
{
struct hero arr[5] =
{
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"},
};
int len = sizeof(arr)/sizeof(hero);
pailie(arr, len);
system("pause");
return 0;
}
为解决问题:若使用指针将结构体作为参数向函数中传递,出现报错情况。具体代码为如下所示:
#include<iostream>
#include<string>
using namespace std;
struct hero
{
string name;
int age;
string sex;
};
void pailie(hero *s[], int n)
{
int temp;
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (s[i]->age < s[j]->age)
{
temp = s[j]->age;
s[j]->age = s[i]->age;
s[i] ->age = temp;
}
}
}
}
void print_result(hero s[],int n)
{
for (int i = 0; i < n; i++)
{
cout << s[i].name << ' ' <<s[i].age<<' ' << s[i].sex << endl;
}
}
int main()
{
struct hero arr[5] =
{
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"},
};
int len = sizeof(arr)/sizeof(hero);
pailie(&arr, len); //此处就报错,问题:使用地址传递对于结构体数组应该如何传递
print_result(arr,len);
system("pause");
return 0;
}
问题:使用地址传递对于结构体数组应该如何传递?