首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

~关于数组指针的

2012-11-04 
求救~关于数组指针的为什么代码一闪而过?感觉逻辑上没有问题,语法也对~~~编译器 dev c++代码的作用是选择

求救~关于数组指针的
为什么代码一闪而过? 感觉逻辑上没有问题,语法也对~~~ 编译器 dev c++

代码的作用是选择排序~ 求救~ 我觉得问题主要处在swap的参数和


#include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

void swap(int *a,int *b){  
int c;
c=*a;
*a=*b;
*b=c;
}

int main(int argc, char *argv[])
{
  int a[5] = {1,5,2,3,4};
  for(int i=0;i<5;i++){
  int k=i;
  for(int j=i+1;;j++){
  if(a[j]<a[k]){
  k=j;
}
}
swap(a[i],a[k]); // swap(*(a+i),*(a+k)); swap(a+i,a+k)(这个是错误的但结果一样) 的效果也是一样  
  }
   
  for(int i=0;i<5;i++){
printf("%d ",a[i]);
}
   
  system("PAUSE");
  return 0;
}

我的理解是 swap 的参数是引用得到的是实参的值,我调用swap的时候给的也因该是a[i],a[k]这种实参,关键是为什么会一闪而过?


[解决办法]
注意别越界了

C/C++ code
int a[5] = {1,5,2,3,4};    for(int i=0;i<5;i++){        int k=i;        //for(int j=i+1;;j++){ //越界了                for(int j=i+1;j < 5;j++){            if(a[j]<a[k]){                k=j;            }        }        swap(a+i,a+k);     }
[解决办法]
改了下 错了好多

热点排行