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

C++编译错误:Subscript requires array or pointer type及C2664求助

解决C++编译错误:Subscript requires array or pointer type 和 error C2664

问题根源

  • 参数类型不匹配:你定义的niz函数第一个参数是int& arr(单个int变量的引用),但main里传递的是int*类型的动态数组指针,编译器找不到匹配的函数重载,直接触发error C2664。
  • 下标操作符误用:函数里对int&类型的arr使用arr[i],但[]只能用于数组或指针类型,单个int的引用不支持这种下标访问,所以触发Subscript requires array or pointer type错误。

修正后的代码

因为你用的是动态分配的数组(new int[vel]),直接把函数参数改成指针类型最适配:

#include <iostream>
using namespace std;

int* niz(int* arr, int vel){
    for (int i = 0; i < vel;i++) {
        cin >> arr[i];
    }
    for (int i = 0; i < vel;i++) {
        cout << arr[i] << " "; // 加空格让输出更清晰
    }
    return arr;
}

int main() {
    int vel;
    cout << "Unesi velicinu: ";
    cin >> vel;
    int* arr = new int[vel];
    niz(arr, vel);
    delete[] arr; // 必须释放动态分配的内存,避免内存泄漏
}

额外提示

如果你想用数组引用的方式,只能用于固定大小的数组,不适合你这种动态输入大小的场景,所以指针是更合适的选择。另外,动态分配的内存一定要记得用delete[]释放,否则会造成内存泄漏。

内容的提问来源于stack exchange,提问作者Luka Pavlov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:31:02