【发布时间】:2020-11-09 18:33:11
【问题描述】:
我有一个函数,它打印出一个字符串数组。第二个函数应该打印反向列表,但由于某种原因,弹出一个名为 xmemory 的新选项卡,我收到消息:“未处理的异常抛出:写访问冲突。this->_Myproxy 是 0xCCCCCCCC。” 在网上搜索了几个小时后,我终于决定看看这里是否有人可以帮助我。
这是我的代码:
#include <iostream>
#include<string>
using namespace std;
void display(string array[5]);
void displayReverse(string array[5]);
int main()
{
string fruit[5] = {"Apple", "Banana", "Orange", "Kiwi", "Cherry"};
display(fruit);
displayReverse(fruit);
return 0;
}
void display(string array[5])
{
for (int i = 0; i < 5; ++i)
{
cout << array[i] << endl;
}
}
void displayReverse(string array[5])
{
swap(array[1], array[5]);
swap(array[2], array[4]);
swap(array[4], array[5]);
cout << array[1] << endl << array[2] << endl << array[3] << endl << array[4] << endl << array[5] << endl;
}
【问题讨论】:
-
有效索引为
0到size-1。array[5]越界并调用未定义的行为。 -
fwiw 如果您使用
std::array和反向迭代器,您可以编写整个代码而无需明确提及单个索引。或std::reverse如果您不仅想打印反转,而且实际上反转数组 -
昨晚有人问了同样的问题。如果你有 c++20,这会有所帮助:https://en.cppreference.com/w/cpp/ranges/reverse_view
-
非常感谢!它现在正在工作!