2017-04-09 32 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); 

あなたは[i]オペレータがのith要素に値をフェッチ意味testArray[arraySize]を渡しながら

result = algorithmTest(testArray, arraySize); 

あなたの関数であるべきint algorithmTest(int testArray[], int Size)は、最初の引数としてint[]を取りますtestArrayであり、intである。したがって、そのエラーが発生します。

何かを明確にするために、ラインint testArray[arraySize];[...]ラインresult = algorithmTest(testArray[arraySize], arraySize);[...]異なる:第二つの要素にアクセスするためである最初のものは、配列のサイズを示すためのものです。

0

AlgorithmTestの定義を見てください。最初のパラメータとしてint [](int *とも呼ばれます)が必要ですが、それを呼び出すと実際のintになります

関連する問題