0

我正在尝试使用冒泡排序对数组的 LastName 属性(在结构 StudentRecord 下,因此是名称)进行冒泡排序。但我在这样做时遇到了麻烦。

我收到错误消息(我正在使用 MinGW 进行编译):

Invalid array assignment

这是我的代码:

void option2 (StudentRecord student[], int n)
{
   int pass = 1;
   bool done = false;
   StudentRecord temp;
   while (!done && pass <= n-1)
   {
      done = true;
      for (int i = n-1; i >= pass; i--)
      {
         if (student[i].lastName < student[i-1].lastName)
         {
            temp.lastName = student[i].lastName;
            student[i].lastName = student[i-1].lastName;
            student[i-1].lastName = temp.lastName;
            done = false;
         }
      }
      pass++;
   }
}
4

1 回答 1

2

它看起来像lastName一个字符数组。

您不能将整个数组分配给彼此;您需要使用strcpy()(#include <cstring>) 将一个复制到另一个。此外,使用<with 字符数组将导致比较每个数组中第一个元素的内存地址,而不是整个字符串;用于strcmp此(如果第一个参数按字典顺序<第二个参数,则返回<0)。

Note you can (and probably should) use std::string instead (#include <string>), which will automatically provide copying, comparison, and dynamic growth for you transparently.

于 2012-12-05T20:32:16.793 回答