初始化数组之间的区别

时间:2018-02-20 20:58:35

标签: c++ c arrays

如果我使用变量而不是常量初始化数组,那么我得到了一个奇怪的输出 下面的两个代码为我生成了不同的输出。

int x =7;
int arr[x];

int arr[7];

第一个生成此输出

78  9  73  32  6422216  50  42

和第二个

78  9  73  54  29  50  42

我需要使用向量的大小来表示数组大小。 我已经尝试使变量保持不变但它并没有什么区别。

编辑 在这里使用数组

int arr[size];
for(int j=i;j<nums.size();j++)
    arr[j+1]=nums[j];
arr[i]=nums[signs.size()];
for(int j=0;j<nums.size();j++)
    nums[j]=arr[j];

1 个答案:

答案 0 :(得分:1)

在两种情况下都没有初始化数组。

如果没有显式初始值设定项,则数组(或任何变量)的内容为 indeterminate 。您无法预测这些值会是什么。如果其中一个值恰好是陷阱表示,则在尝试读取该值时调用未定义的行为。

如果希望数组具有一组特定的值,则需要使用初始化程序或赋值显式设置这些值。