为什么必须将动态分配的数组从main传递给c ++中的函数?

时间:2019-05-16 23:52:14

标签: c++

我才刚刚开始学习编程,所以如果这是一个愚蠢的问题,请多多包涵:

为什么我们必须将动态分配的数组从main传递给函数?例如,在python中,我认为没有必要吗?那么为什么我们要用C ++呢?为什么函数不能直接访问数组?

在下面的代码中,如果我没有将arr_ptr[]作为函数的参数传递,它将无法正常工作。我想知道为什么会这样。由于数组是动态分配的,为什么函数不能通过指针直接访问数组?

#include<iostream>
using namespace std;

//function sums the values in array
double sumArray(double arr_ptr[],int size)
{   double sum=0.0;
    for (int i=0;i<size;i++)
    {
        sum=sum+arr_ptr[i];
    }

    return sum;
}


int main()
{
    int num_of_vals=0;
    cout<<"Enter number of values to be summed: ";
    cin>>num_of_vals;
    double* arr_ptr=NULL; //creates double ptr
    arr_ptr= new double[num_of_vals]; //dyn array

    for (int i=0;i<num_of_vals;i++)
        {   cout<<"enter value #"<<i<<" out of " <<num_of_vals-1<<" to be 
             summed:";
            cin>>arr_ptr[i];
        }
    int sum=sumArray(arr_ptr,num_of_vals);
    cout<<"sum of values is:"<<sum<<endl;
    delete[] arr_ptr;
    return 0;
}

1 个答案:

答案 0 :(得分:1)

简短的回答:您没有。您可以随时使用全局变量。

话虽这么说:globals are evil。通常认为这是一种不好的做法,而且经常是一种懒惰的做法。

通常指导C ++开发的东西,它允许将C ++用于大型项目,从而缩小了可见性和责任感。一个主要目标是创建class invariants。使用Python很难保证。

Python和C ++是适合不同工作的不同工具。

无论如何,您也应该在Python中将变量作为参数传递:这允许您重用代码。