0
            int sortAtt2,compare=0,counter=0;
            string tempTitle;
            for(int t=0; t<MAX_BOOKS; t++)
            {
                for(int i=0; i<MAX_BOOKS; i++)
                {
                    compare=(books[i+1].bookTitle).compare(books[i].bookTitle);
                    if(compare>0)
                    {
                        tempTitle=books[i].bookTitle;
                        books[i].bookTitle=books[i+1].bookTitle;
                        books[i+1].bookTitle=tempTitle;

                    }
                }
            }

这是我的代码,每当我执行这个函数时,程序就会崩溃。知道为什么吗?我在这里比较两个字符串以对它们进行冒泡排序。

4

2 回答 2

3

越界访问。您正在books[i+1]一个循环中访问,其中i计数为MAX_BOOKS - 1,即,您正在访问- 一个超过包含元素books[MAX_BOOKS]的数组的末尾。MAX_BOOKS

于 2013-02-13T03:30:04.240 回答
1

如果您有 MAX_BOOKS 8 个。

Book books[MAX_BOOKS];

你像这样循环。

for(int i=0; i<MAX_BOOKS; i++)
{
  books[i+1];
}

什么时候发生i == 7

于 2013-02-13T03:32:40.503 回答