C++ 尝试使用一个FOR循环在两个数组中保存不同的值,但第一个数组被赋予了第二个输入的值
我正在测试使用函数在2个数组中输入值以及执行值相加的能力。我希望使用函数C++ 尝试使用一个FOR循环在两个数组中保存不同的值,但第一个数组被赋予了第二个输入的值,c++,arrays,C++,Arrays,我正在测试使用函数在2个数组中输入值以及执行值相加的能力。我希望使用函数inputArray(A1,A2,size)使用For循环在两个数组中输入不同的值。 我还使用了一个函数sumArray(A1,A2,size)来执行数组中2个值的加法 但问题在于输入函数,因为当我运行程序在两个数组中输入不同的值时,第一个数组也被赋予了第二个数组的值 void inputArray(int Array1[], int Array2[], int n) { for(int i=0; i<n; i
inputArray(A1,A2,size)
使用For循环在两个数组中输入不同的值。
我还使用了一个函数sumArray(A1,A2,size)
来执行数组中2个值的加法
但问题在于输入函数,因为当我运行程序在两个数组中输入不同的值时,第一个数组也被赋予了第二个数组的值
void inputArray(int Array1[], int Array2[], int n)
{
for(int i=0; i<n; i++)
{
cout<<"Array 1:"<<endl;
cin>>Array1[i];
cout<<" Array 2: "<<endl;
cin>>Array2[i];
cout<<endl;
//test
cout<<"\n\t A1[0]= "<<Array1[0]<<endl;
cout<<"\n\t A2[0]="<<Array2[0]<<endl;
}
}
int sumArray(int Array1[], int Array2[], int n)
{
int sum= 0;
for(int i=0; i<n; i++)
{
sum+= ( Array1[i] + Array2[i] );
cout<<"The total sum so far for values till position "<<i<<" is "<<sum<<endl;
}
//to monitor if the program is performing well with the addition
//test
cout<<"\n\t A1[0]= "<<Array1[0]<<endl;
cout<<"\n\t A2[1]="<<Array2[2]<<endl;
return sum;
}
#包括
使用名称空间std;
无效输入阵列(int-Array1[],int-Array2[],int-n)
{
对于(int i=0;i,这里使用非初始化变量表示两个数组的大小
int size;
int A1[size];
int A2[size];
<>这是C++中的错误,不止一种方式。
您需要定义具有恒定大小的类C数组。
更安全的是使用C++容器,例如,对于不具有可预测大小的任何东西,例如“代码> STD::向量< /代码>。
即使在可以使用VLA的C语言中,像您那样创建它们,然后为size
读入一个新值,也不会改变任何东西,尤其是数组的大小
而且,这已经是未定义的行为和纯粹的推测,
如果编译器理解为大小为0的A1
和A2
,则两个数组的开头是相同的,对一个数组的写入也会写入另一个数组,这是完全禁止的,因为它将访问超过任何数组大小的数组
要证明这一点,请尝试
int A1[5];
int A2[5];
这里使用一个非初始化变量来表示两个数组的大小
int size;
int A1[size];
int A2[size];
<>这是C++中的错误,不止一种方式。
您需要定义具有恒定大小的类C数组。
更安全的是使用C++容器,例如,对于不具有可预测大小的任何东西,例如“代码> STD::向量< /代码>。
即使在可以使用VLA的C语言中,像您那样创建它们,然后为size
读入一个新值,也不会改变任何东西,尤其是数组的大小
而且,这已经是未定义的行为和纯粹的推测,
如果编译器理解为大小为0的A1
和A2
,则两个数组的开头是相同的,对一个数组的写入也会写入另一个数组,这是完全禁止的,因为它将访问超过任何数组大小的数组
要证明这一点,请尝试
int A1[5];
int A2[5];
在int-size;int-A1[size];int-A2[size];
之后,您希望数组的大小是多少?您希望随后执行的行size=3;
对此有任何影响吗?您没有收到任何编译器警告吗?在int-size;int-A1[size]之后,您希望数组的大小是多少;int A2[size];
?您是否希望随后执行的行size=3;
对此有任何影响?您没有收到任何编译器警告吗?