抛出未处理的异常:写访问冲突:打印出数组元素
Unhandled exception thrown: write access violation: Printing out array elements
我有一个函数,它打印出一个字符串数组。第二个函数应该打印反向列表,但由于某种原因弹出一个名为 xmemory 的新选项卡,我收到消息:“抛出未处理的异常:写访问冲突。this->_Myproxy 是 0xCCCCCCCC。”。 =16=] 在网上搜索了几个小时后,我终于决定看看这里是否有人可以帮助我。
这是我的代码:
#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;
}
#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])
{
for (int i = 4; i >= 0; i-=1)
{
cout << array[i] << endl;
}
}
使用循环而不是交换。这真是个好主意。
数组索引从0开始。它不会从1开始。所以如果你有5个元素的数组,你可以通过array[0]访问第一个元素。 array[1] 代表第二个元素。您的 displayReverse() 正在尝试访问数组中不存在的第 6 个元素。
下面是经过一些修改的代码。
#include <iostream>
#include <string>
using namespace std;
void display(string array[], int size);
void displayReverse(string array[]);
int main()
{
string fruit[5] = {"Apple", "Banana", "Orange", "Kiwi", "Cherry"};
display(fruit, 5);
displayReverse(fruit);
return 0;
}
void display(string array[], int size)
{
for (int i = 0; i < size; ++i)
{
cout << array[i] << endl;
}
}
void displayReverse(string array[])
{
swap(array[0], array[4]);
//swap(array[2], array[3]);
swap(array[1], array[3]);
cout << array[0] << endl << array[1] << endl << array[2] << endl << array[3] << endl << array[4] << endl;
}
我有一个函数,它打印出一个字符串数组。第二个函数应该打印反向列表,但由于某种原因弹出一个名为 xmemory 的新选项卡,我收到消息:“抛出未处理的异常:写访问冲突。this->_Myproxy 是 0xCCCCCCCC。”。 =16=] 在网上搜索了几个小时后,我终于决定看看这里是否有人可以帮助我。
这是我的代码:
#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;
}
#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])
{
for (int i = 4; i >= 0; i-=1)
{
cout << array[i] << endl;
}
}
使用循环而不是交换。这真是个好主意。
数组索引从0开始。它不会从1开始。所以如果你有5个元素的数组,你可以通过array[0]访问第一个元素。 array[1] 代表第二个元素。您的 displayReverse() 正在尝试访问数组中不存在的第 6 个元素。
下面是经过一些修改的代码。
#include <iostream>
#include <string>
using namespace std;
void display(string array[], int size);
void displayReverse(string array[]);
int main()
{
string fruit[5] = {"Apple", "Banana", "Orange", "Kiwi", "Cherry"};
display(fruit, 5);
displayReverse(fruit);
return 0;
}
void display(string array[], int size)
{
for (int i = 0; i < size; ++i)
{
cout << array[i] << endl;
}
}
void displayReverse(string array[])
{
swap(array[0], array[4]);
//swap(array[2], array[3]);
swap(array[1], array[3]);
cout << array[0] << endl << array[1] << endl << array[2] << endl << array[3] << endl << array[4] << endl;
}