从int到int *的无效转换

时间:2017-04-09 09:11:30

标签: c++ arrays function loops int

我收到错误:

从int到int *的转换无效。

我没有创建任何int *(我认为),当我将违规行更改为int *时,没有构建错误,但程序在启动时崩溃。

这是我的代码:

<activity
        android:name=".NotifActivity"
        android:parentActivityName=".HomeActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".HomeActivity" />
    </activity>
    <activity
        android:name=".NotifViewActivity"
        android:parentActivityName=".NotifActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".NotifActivity" />
    </activity>

当我调用algorithmTest()时,它会抛出错误;这是:

//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;

}

2 个答案:

答案 0 :(得分:1)

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

应该是

result = algorithmTest(testArray, arraySize);

您的函数int algorithmTest(int testArray[], int Size)int[]作为第一个参数,而您传递testArray[arraySize],其中[i]运算符表示获取ith元素处的值testArrayint。因此,您会遇到该错误。

为了澄清某些内容,行[...]中的int testArray[arraySize];与行[...]中的result = algorithmTest(testArray[arraySize], arraySize);不同:第一个用于指示数组&#39}。大小,而第二个用于访问元素。

答案 1 :(得分:0)

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