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

时间:2016-08-23 00:59:07

标签: 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;
}

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

    delete[] numbers;

}

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

1 个答案:

答案 0 :(得分:5)

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

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