繁体   English   中英

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

[英]Shakersort c++, error: invalid conversion from ‘int’ to ‘int* - I can't find where I mixed integer and pointer to integers

 #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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM