【发布时间】:2017-02-05 11:07:43
【问题描述】:
那么为什么我必须这样做“人[城市][年]=1000;”东西?
int People[2059][100];
for (int city = 0; city < 2059; city++)
for (int years = 0; years < 100; years++)
People[city][years] = 1000;
【问题讨论】:
-
如果不初始化变量,它们将包含随机值。如果你不关心这个,你不必初始化你的数组。
-
欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里问什么以及如何问。
-
未初始化的非静态本地(也称为“自动”)变量将具有 indeterminate 值。甚至使用它们来读取它们的值也会导致 C++ 中的未定义行为。在 C 中,读取它们的值是合法的,除非它是一个陷阱值。
-
在不相关的注释中,您的数组将是 823600 字节大。局部变量通常存储在堆栈中,堆栈是有限的资源。例如,默认的 Windows 进程堆栈是一个兆字节。你的数组已经接近极限了。
-
@Someprogrammerdude “甚至读取它们的值” - 听起来有点像写入它们也是 UB。
标签: c++ c arrays initialization