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;
}
}
}
这是我的代码,每当我执行此函数时,程序崩溃。知道为什么吗?我在这里比较两个字符串来冒泡它们。
答案 0 :(得分:3)
越界访问。您正在books[i+1]
计算最多i
的循环中访问MAX_BOOKS - 1
,即,您正在访问books[MAX_BOOKS]
- 一个数字末尾超过MAX_BOOKS
的{{1}}元素。
答案 1 :(得分:1)
如果您的MAX_BOOKS为8。
Book books[MAX_BOOKS];
你这样循环。
for(int i=0; i<MAX_BOOKS; i++)
{
books[i+1];
}
i == 7
时会发生什么?