Shakersort c++,错误:从"int"到"int* 的转换无效 - 我找不到将整数和指向整数的指针混合在一起的位置


#include <iostream>
using namespace std;
const int up=18;
int realArray[up]={12,28,75,16,66,6,121,19,195,56,108,221,19,93,104,127,73,22}; //definition of a random array
void shakersort(int formArray[up]);//shakersort declared
void tauschen(int *a,int *b){int zw= *a; *a=*b; *b=zw;}
int main()
{
shakersort(realArray[up]); //here happens the error of the conversion 
return 0;
}
void shakersort(int formArray[up]){ //the code
for(int i=0; i<up/2;i++){
for (i=0; i<up-1;i++){
if(formArray[i]>formArray[i+1]){
tauschen(&formArray[i], &formArray[i+1]);
}
}
for (int k=up-1; k>0;i--){
if(formArray[k]>formArray[k-1]){
tauschen(&formArray[k], &formArray[k-1]);
}
}
}
} 

不确定为什么会出现转换错误。在声明和应用程序中使用了相同的代码,所以不确定为什么它不起作用。

up是值为18int,因此在此行中

shakersort(realArray[up]);

你基本上是在写

shakersort(realArray[18]);

它将对数组中的单个值进行索引(这也恰好超出了界限,因此这将是未定义的行为(。相反,只需通过阵列本身的

shakersort(realArray);

尽管我鼓励你考虑使用std::vector而不是

void shakersort(std::vector<int>& formArray);

所以你不需要一个浮动的全局变量来确定数组的大小,你只需要使用formArray.size()

相关内容

最新更新