【发布时间】:2017-12-24 22:13:32
【问题描述】:
我想知道在全局范围和函数范围内初始化数组一次的属性。
让我们说:
char arr[4];
int main() {
.....
}
这个数组中的值是什么?
这个选项有什么作用:
int main() {
char arr[4];
....
}
最后一种情况和这个有什么区别吗:
int main() {
....
}
int func1() {
char arr[4];
....
}
结果会在不同的编译器中改变吗? 谢谢
【问题讨论】:
-
(1) 零 (2) 不确定 (3) 否。
-
函数块中声明的变量会在函数结束时超出作用域。
-
在线查看一些function scope 教程
-
就这个问题的详细程度而言,C90 与准标准 C 或 C99 或 C11 之间没有区别。其他数组初始化上下文(指定的初始化程序,本地数组初始化程序中的函数调用等)存在差异,但就这么多,没有区别。请注意,某些平台可能会将本地数组初始化为零,特别是如果它们位于
main()中,但您不能依赖它——这些值是不确定的。