初始化数组的区别[关闭]

Posted

技术标签:

【中文标题】初始化数组的区别[关闭]【英文标题】:Difference Between initializing an array [closed] 【发布时间】:2018-02-20 20:58:34 【问题描述】:

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

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];

【问题讨论】:

作为函数中定义的本地(自动)变量:两者都没有被初始化。 你还没有初始化数组。 C 还是 C++?后者甚至没有变长数组。 你没有初始化数组,你看到的是剩余的垃圾 第一个如何在 c++ 上编译?它必须是一个 const int 【参考方案1】:

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

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

如果您希望您的数组有一组特定的值开始,您需要明确设置这些值,或者使用初始化程序或通过赋值。

【讨论】:

请注意,您不能初始化 VLA。 我编辑了我的帖子,稍后在循环中初始化数组 @irrelevent;这叫做赋值,而不是初始化。 在全局命名空间零中定义的数组是否像所有其他变量一样初始化? @Zebrafish 如果在文件范围或static 中定义,那么是的,所有数组元素都初始化为零。

以上是关于初始化数组的区别[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C ++初始化数组最后一个值是随机的[关闭]

在while循环中重新初始化数组[关闭]

如何在 C++ 中初始化指向动态二维数组的指针 [关闭]

Widget的类变量和构造函数中初始化数组的区别?

初始化数组是不是保留其在 C/C++ 和类似语言中的顺序? [关闭]

Golang 中数组(Array)和切片(Slice)的区别