首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2个数组变得相等

2个数组变得相等
EN

Stack Overflow用户
提问于 2021-05-07 20:32:13
回答 1查看 60关注 0票数 0

我需要做2个数组(arr1arr2)的大小必须从值3-10只。为此,我将两个数组的范围都设置为var size(如代码所示)。但是,在输入arr1arr2的值并打印它们之后,arr1的值变成了与arr2相同的值。

代码语言:javascript
运行
复制
#include<iostream>
using namespace std; 

int main()
{ 
    int size, a = 0, b = 0, c = 0; 
    int arr1[size], arr2[size]; 
    
    while(a = 1)
    { 
        cout << "Enter desired size of the array: "; 
        cin >> size; 

        if(size >= 3 && size <= 10)
        {  
            break; 
        } 
        a= 1;   
    }
    
    cout<<"\nEnter value for Array 1: " << endl;
    for(int i = 0; i < size; i++)
    {
        cin >> arr1[i]; 
    }
    
    for(int i = 0; i < size; i++)
    {
        cout << arr1[i]; 
    }
    
    cout<<"\nEnter value for Array 2: " << endl;
    for(int i = 0; i < size; i++)
    {
        cin >> arr2[i]; 
    }
    
    for(int i = 0; i < size; i++)
    {
        cout <<"Array 1: " << arr1[i] << " Array 2: " << arr2[i] << endl; 
    }
}

输出:

代码语言:javascript
运行
复制
Enter desired size of the array: 3

Enter value for Array 1:
1
2
3
123
Enter value for Array 2:
5
4
3
Array 1: 5 Array 2: 5
Array 1: 4 Array 2: 4
Array 1: 3 Array 2: 3

当我更改或设置我的arr2 (例如arr2[3])的范围时,这个问题就消失了。但是,我需要arr1arr2具有相同的大小,并且大小必须来自用户。解决方案是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-05-07 20:41:56

这是一段糟糕的代码:

代码语言:javascript
运行
复制
int size; 
int arr1[size], arr2[3]; 

在定义数组时,未初始化大小。此外,即使它是,数组也将是可变长度数组,这确实是C语言的事情,但由于异常处理中的各种问题,它不是标准的C++。它们只被一些编译器接受为标准的扩展,主要是gcc和Clang。

根据您的编译选项,在定义时size可能为0。在这种情况下,编译器将在相同内存位置使arr1arr2为0大小的数组。当然,使用它们中的任何一个都会引发未定义的行为。

创建大小仅在运行时已知的数组的正常方法是使用使用new[]分配的动态数组(稍后使用delete[]释放)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67435019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档