为什么我的数组输出一个不在其中的元素

Why my array outputs an element that is not in it?

本文关键字:一个 在其中 元素 数组 我的 输出 为什么      更新时间:2023-10-16

我的数组中仍然存在相同的wierd数问题,但这次是在不同的函数中:

#include <iostream>
using namespace std;
//First Array
int n[20];
int i, a;
//Second Array
int n2[20];
int i2, a2;
void arraySelection();
void printArrays();
void unionArray();
void intersectionArray();
int main(){ 
arraySelection();
printArrays();
intersectionArray();
unionArray();
return 0;
}
void arraySelection(){
cout << "First array size: ";
cin >> a;
cout << "Array elements: " << endl;;
for (i = 0; i < a; i++){
cin >> n[i];
}
cout << "nSecond array size: ";
cin >> a2;
cout << "Array elements: " << endl;;
for (i2 = 0; i2 < a2; i2++){
cin >> n2[i2];
}
}
void unionArray(){
const int riemp = 40;       
int unionNums[riemp];
int j, x, y, z;
bool t = false;
for (j = 0; j <= riemp; j++){
unionNums[j] = n[j];
cout << unionNums[j] << " ";
}
}

基本上,我试图将我的第一个数组n[20]的数字复制到我的unionNums[40]数组中。它实际上是这样做的,但它也输出一系列0和其他大的wierd数。两天过去了,仍然不知道。(附言:如果我试图将固定数字赋给数组,这样就可以消除用户输入,这没有任何问题(我也没有麻烦复制我的intersectionArray和printArray函数,因为它们做的事情我现在不再需要了

在这里您可以读取n[a-1]:以下的元素

for (i = 0; i < a; i++){
cin >> n[i];
}

因此,直到n[a-1]的所有元素都被初始化。然后打印所有元素,直到n[a]

for (i = 0; i < a+1; i++){ // note that you have "a+1" here, not just "a"
cout << n[i] << " - ";
}

n[a]未初始化。当你读出来的时候,这是未定义的行为。这通常表现为获得一个垃圾值,这就是您在输出中看到的。在第二个数组/循环中也会发生同样的情况,在该循环中,为i2 < a2写入数组,但为i2 < a2+1获得输出。

相关文章: