求问:我的C++代码想要解决的问题是:
设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。
通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。
五名英雄信息如下:
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"}
我的代码是:
```c++
#include<iostream>
#include<string>
#pragma pack(1)
using namespace std;
struct hero
{
string name;
int age;
string sex;
};
void bubble(struct hero arr[], int len)
{
for (int i = 0; i < len; i++)
{
hero temp;
for (int j = 0; j < 5-i; j++)
{
if (arr[j].age > arr[j + 1].age)
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void priall(struct hero arr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "姓名: " << arr[i].name << "年龄: " << arr[i].age << "性别:" << arr[i].sex << endl;
}
}
int main()
{
struct hero arr[5] =
{
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"}
};
int len = sizeof(arr);
bubble(arr, len);
priall(arr, len);
return 0;
}
代码运行起来在void bubble中的
>
```c++
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
处会出现报错:0x7B8538DE (vcruntime140d.dll)处(位于 2024.8.15C++.exe 中)引发的异常: 0xC0000005: 读取位置 0x9D63ADDB 时发生访问冲突。
请问如何解决呢?我自己也在CSDN上搜索过类似的报错,但是不会解决