读书人

~关于数组指针的

发布时间: 2012-11-04 10:42:42 作者: rapoo

求救~关于数组指针的
为什么代码一闪而过? 感觉逻辑上没有问题,语法也对~~~ 编译器 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);     }
[解决办法]
改了下 错了好多

读书人网 >C++

热点推荐