Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尝试使用一个FOR循环在两个数组中保存不同的值,但第一个数组被赋予了第二个输入的值_C++_Arrays - Fatal编程技术网

C++ 尝试使用一个FOR循环在两个数组中保存不同的值,但第一个数组被赋予了第二个输入的值

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

我正在测试使用函数在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++)
    {
        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;
对此有任何影响?您没有收到任何编译器警告吗?