C++新手问题,读取位置时访问冲突~~~~~纠结死了

木易光 2011-12-20 04:43:17
下面为代码,目的是交换一个数组前m和元素和后n个元素(总长度为m+n):



#include "stdafx.h"
#include <iostream>

using namespace std;

void arr_swap(int a[],int m,int n);
void reverse(int a[],int left, int right);

int _tmain(int argc, _TCHAR* argv[])
{
int a[10];
for(int i=0;i<10;i++){
a[i]=i;
}
arr_swap(a,6,4);
for(int i=0;i<10;i++){
cout<<a[i]<<" ";
}
return 0;
}

void arr_swap(int a[],int m,int n)
{
reverse(a,0,m+n-1);
reverse(a,0,n-1);
reverse(a,n,m+n-1);

}

void reverse(int a[],int left, int right)
{
while(left!=right){
int temp=a[left];
a[left]=a[right];
a[right]=temp;
left++;
right--;
}
}
...全文
108 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
木易光 2011-12-20
  • 打赏
  • 举报
回复
对啊!!!!仁兄高见~~太谢谢了!!!!!
我去查了好些人的说法是什么数组越界呀指针为空呀什么的东西,结果错误竟然在这儿!
顿觉心里畅快好多~O(∩_∩)O~
yisikaipu 2011-12-20
  • 打赏
  • 举报
回复
while(left!=right)

原因是这一句不行

比如left从4变成5
而right从5变成4
两者就永远不会相等了

程序逻辑你自己考虑,比如是不是应改成while(left<right)呢

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧