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