初始化数组的区别[关闭]
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
中定义,那么是的,所有数组元素都初始化为零。以上是关于初始化数组的区别[关闭]的主要内容,如果未能解决你的问题,请参考以下文章