C++分段故障指针
我正在编写的一个程序采用了一组名称和年龄并按字母顺序排列。有时这个程序会起作用。大多数情况下,我在打印按字母顺序排列的列表的过程中发现了一个分段错误 这是我的头文件中的一个示例C++分段故障指针,c++,arrays,pointers,C++,Arrays,Pointers,我正在编写的一个程序采用了一组名称和年龄并按字母顺序排列。有时这个程序会起作用。大多数情况下,我在打印按字母顺序排列的列表的过程中发现了一个分段错误 这是我的头文件中的一个示例 public: static const int MAXSTU = 50; Student(); void inputData(); void sortData(); void printOriginalData(); void printAlphaData();
public:
static const int MAXSTU = 50;
Student();
void inputData();
void sortData();
void printOriginalData();
void printAlphaData();
private:
int arraytotal;
int *temp1;
std::string *temp2;
std::string originalname[MAXSTU];
std::string *alphaname[MAXSTU];
int originalage[MAXSTU];
int *alphaage[MAXSTU];
这些是导致问题的功能
void Student::sortData() {
for(int i=0;i < arraytotal;i++) {
if (originalname[i] > originalname[i+1] ) {
temp1 = alphaage[i];
alphaage[i] = alphaage[i + 1];
alphaage[i + 1] = temp1;
temp2 = alphaname[i];
alphaname[i] = alphaname[i + 1];
alphaname[i+1]= temp2;
}
}
}
void Student::printAlphaData()
{
cout << "\nAlphabetized list\n";
cout << "---------------------------\n";
for (int i = 0; i < arraytotal; ++i)
{
cout << left << setw(30) << *alphaname[i];
cout << right << setw(10) << *alphaage[i] << endl;
}
cout << endl;
}
如果您能帮助我们找出问题所在,我们将不胜感激。还有没有更好的方法将数组按字母顺序排序?也许可以使用std::sort?为什么在使用STD::vector时使用数组?有没有理由使用STD::String而不是仅仅STD::string?为什么Tim1和Tun2类成员,当它们在使用的方法中只是本地人?这个程序是用于C++类的一个。我必须对数据使用并行名称和年龄数组。arraytotal的值是多少?如果它是数组的实际大小,那么在访问索引为i+1的元素时,sortData中的循环条件应该是i