C++ 在c+;中,为什么必须将动态分配的数组从main传递到函数+;?
我刚刚开始学习编程,所以如果这是一个愚蠢的问题,请容忍我: 为什么我们必须将动态分配的数组从main传递到函数?例如,在python中,我认为没有必要对吗?那么为什么我们要用C++来做呢?为什么函数不能直接访问阵列 在下面的代码中,如果我没有将C++ 在c+;中,为什么必须将动态分配的数组从main传递到函数+;?,c++,C++,我刚刚开始学习编程,所以如果这是一个愚蠢的问题,请容忍我: 为什么我们必须将动态分配的数组从main传递到函数?例如,在python中,我认为没有必要对吗?那么为什么我们要用C++来做呢?为什么函数不能直接访问阵列 在下面的代码中,如果我没有将arr\u ptr[]作为参数传递给函数,它将不起作用。我想知道为什么会这样。既然数组是动态分配的,为什么函数不能通过指针直接访问数组 #include<iostream> using namespace std; //function su
arr\u 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;
}
#包括
使用名称空间std;
//函数对数组中的值求和
双相乘数组(双arr_ptr[],整数大小)
{双和=0.0;
对于(inti=0;i简短回答:您不需要。您可以始终使用globals
话虽如此,这通常被认为是一种不好的做法,而且常常是一种懒惰的做法
C++中通常指导开发的东西,允许它用于巨大的项目,它可以缩小可见性和响应能力。一个主要目标是创建。这很难用Python来保证。
Python和C++是适合不同工作的不同工具。
无论如何,您也应该在Python中将变量作为参数传递:这允许您重用代码。您可以让函数访问调用函数的本地数组(例如,main
).你想举个例子吗?你能提供一个你在每种语言中的意思的编码例子吗?因为我真的不认为我理解你在问什么。如果你问为什么范围很重要,那么当你试图维护一个所有变量都声明为全局的中型项目时,你会学到各种各样的痛苦(这就是我所说的。)你可以在全局时间创建动态分配的变量,但是它会变得复杂。使用全局变量也是Python中的坏操作!如果你喜欢,你也可以在C++中做坏事:BTW:你的代码看起来完全像C!你的数据与函数分离。C++中你有能力使用类和对象来阐明从数据到方法的关系。如果你开始面向对象编程,你会发现参数传递的数量会自动减少。我建议你读一个初学者BO。好的C++!也处理原始数组不是C++风格!