C++ 在函数中声明新int[]时在main中使用delete[]

C++ 在函数中声明新int[]时在main中使用delete[],c++,arrays,C++,Arrays,我的第一份工作是: 第一个函数readNumbers是从std::cin中读取一组10个数字,并使用它们初始化长度为10的int的动态分配数组(动态分配在堆上)。该函数必须返回指向该数组的指针。您可以假设输入为10个整数值,而不是其他值 这很好,但是我需要: 此问题的主函数必须调用readNumbers函数,然后将新数组传递给printNumbers函数,最后删除该数组 但是,当在函数中声明了新的int[]时,我不确定如何处理main中的delete。下面是我代码的相关部分 int *readN

我的第一份工作是:

第一个函数readNumbers是从std::cin中读取一组10个数字,并使用它们初始化长度为10的int的动态分配数组(动态分配在堆上)。该函数必须返回指向该数组的指针。您可以假设输入为10个整数值,而不是其他值

这很好,但是我需要:

此问题的主函数必须调用readNumbers函数,然后将新数组传递给printNumbers函数,最后删除该数组

但是,当在函数中声明了新的int[]时,我不确定如何处理main中的delete。下面是我代码的相关部分

int *readNumbers(){
    int * numbers;
    numbers = new int [10];

    for (int i = 0; i < 10; i++){
        int userinput;
        cin >> userinput;
        *(numbers+i) = userinput;
    }
    return numbers;
}

显然,main中的delete[]请求是一个语法错误,我不确定解决方案。

您需要将
readNumbers()
的结果分配给一个变量,然后才能删除它

int main() {
    int *numbers = readNumbers();
    printNumbers(numbers, 10);
    delete[] numbers;
    return 0;
}

这不是语法错误。它只是使用了一个未声明的变量。一旦你完成了这项工作,请做好准备,忘记
new
的数组形式根本存在(除非,可能在你获得最终分数后,去告诉你的老师学习更好的教学内容)。不会用C编译器编译,不要用CJerry标记它,如果你想给我指出一些更有用的课外学习的方向,我会记下来:)。看看
std::vector
std::array
你是一个向导,这对我来说太简单了,不能错过。干杯,伙计!
int main() {
    int *numbers = readNumbers();
    printNumbers(numbers, 10);
    delete[] numbers;
    return 0;
}