2017-04-09 175 views
0

我收到错误:从int到int的无效转换*

从int到int *的转换无效。

我还没有创建任何int *(我认为),当我将有问题的行更改为int *时,没有生成错误,但程序在启动时崩溃。

这里是我的代码:

//Main: 
int main(){ 

    //Varibales: 
    Random randomInt; 
    clock_t start; 
    clock_t End; 
    double duration; 
    double clocksPerSec; 
    int result; 
    int arraySize; 


    //Repeat 100 times: 
    for(int i=1; i<=100; i++){ 

     //Set array size: 
     arraySize = i*500; 
     //Create the array: 
     int testArray[arraySize]; 

     //For the array size: 
     for(int j=0; j<arraySize; j++){ 


      //Add random number to array: 
      testArray[j] = randomInt.randomInteger(1, 10000); 

     } 

     //Run the test: 
     start = clock(); 
     result = algorithmTest(testArray[arraySize], arraySize); 
     End = clock(); 

     //Calculate execution time: 
     duration = End - start; 
     clocksPerSec = duration/CLOCKS_PER_SEC; 

     //Display the result: 
     cout << "The median is: "; 
     cout << result << endl; 
     cout << "Exection time was: "; 
     cout << clocksPerSec; 
     cout << "s\n" << endl; 

    } 

    //Return 0: 
    return 0; 

} 

它接缝我的呼唤algorithmTest()将引发错误;那就是:

//First Test: 
int algorithmTest(int testArray[], int Size){ 

    //Declare variables: 
    int k = Size/2; 
    int numSmaller; 
    int numEqual; 

    //For every element in the array: 
    for(int i=0; i<Size; i++){ 

     //Set varibales to 0: 
     numSmaller = 0; 
     numEqual = 0; 

     //For every element in the array: 
     for(int j=0; j<Size; j++){ 

      //If j is less than i: 
      if(testArray[j] < testArray[i]){ 

       //Increment numSmaller: 
       numSmaller++; 

      //Else if j is equal to i: 
      }else if(testArray[j] == testArray[i]){ 

       //Increment numEqual: 
       numEqual++; 

      } 
     } 

     //Determine if the median was found: 
     if(numSmaller < k && k <= (numSmaller + numEqual)){ 

      //Retrun the medain: 
      return testArray[i]; 

     } 
    } 

    //Return 0: 
    return 0; 

} 

回答

1
result = algorithmTest(testArray[arraySize], arraySize); 

应该

result = algorithmTest(testArray, arraySize); 

你的功能int algorithmTest(int testArray[], int Size)需要一个int[]作为第一个参数,而你传递一个testArray[arraySize],其中[i]运营商指的ith元素获取值testArray,这是一个int。因此你遇到那个错误。

为了澄清一些,在线路int testArray[arraySize];[...]距离[...]不同的线result = algorithmTest(testArray[arraySize], arraySize);:第一种是用于指示数组的大小,而第二个是用于访问的元素。

0

看看AlgorithmTest的定义。你需要一个int [](也被称为int *)作为第一个参数,但是当你调用它的时候,你会给它一个实际的int