You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++函数中数组使用问题求助:带索引数组参数传递报错

Fixing "cannot convert int to int[]" Error in C++

Hey there! Let's figure out why you're hitting this error and get your code working. The "cannot convert int to int[]" message tells us there's a clear mismatch between what you're passing to the function and what the function expects. Let's break down the two most common scenarios and their fixes:

Scenario 1: You want to pass a single element from the array

If your goal is to send one specific value from the array (like arr[2]) to the function, the issue is that your function was declared to accept an array (int[]), but you're passing a single integer.

Wrong function definition (causes the error)

void targetFunction(int[] arr) {
    // Your code here
}

Correct function definition

Change the parameter to accept a single int instead:

#include <iostream>
using namespace std;

void targetFunction(int value) {
    // Use the single integer value, e.g.:
    cout << "Received value: " << value << endl;
}

int main() {
    // Your array with initial values (size inferred from the list)
    int myArray[] = {15, 25, 35, 45};
    // Call the function with the element at index 1
    targetFunction(myArray[1]);
    return 0;
}

Scenario 2: You want to pass a subarray starting at a specific index

If you meant to pass a portion of the array starting at your chosen index (not just one element), you need to adjust both the function definition and the way you call it.

In C++, array names decay to pointers, so you can use myArray + index to get a pointer to the start of your subarray. You should also pass the length of the subarray to avoid out-of-bounds errors.

Correct function definition and call

#include <iostream>
using namespace std;

void targetFunction(int* subArray, int subLength) {
    // Iterate through the subarray
    for (int i = 0; i < subLength; i++) {
        cout << subArray[i] << " ";
    }
    cout << endl;
}

int main() {
    int myArray[] = {15, 25, 35, 45};
    int startIndex = 2;
    // Calculate the length of the subarray
    int totalLength = sizeof(myArray) / sizeof(myArray[0]);
    int subLength = totalLength - startIndex;

    // Pass the subarray starting at index 2
    targetFunction(myArray + startIndex, subLength);
    return 0;
}

Why the original error happened

When you wrote targetFunction(myArray[index]), you're passing a single integer value (the element at that index). But if your function was declared to accept an int[], the compiler tries to convert that integer into an array type—which isn't possible. That's exactly what the error message is telling you.


内容的提问来源于stack exchange,提问作者Lary John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:31:42