在函数中声明new int []时,在main中使用delete []

Dar*_*rko -3 c++ arrays

我的第一份工作是:

"第一个函数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;
}
Run Code Online (Sandbox Code Playgroud)

int main(){
    printNumbers(readNumbers(),10);

    delete[] numbers;

}
Run Code Online (Sandbox Code Playgroud)

很明显,main中的delete []请求是语法错误,我不确定解决方案.

Bar*_*mar 5

您需要将结果分配给readNumbers()变量,然后您可以删除它.

int main() {
    int *numbers = readNumbers();
    printNumbers(numbers, 10);
    delete[] numbers;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)