![](/img/trans.png)
[英]Invalid conversion from int* to int even though I delimit the pointer
[英]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
是一个值为18
的int
所以在这一行
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.