解决方法
这取决于数组的声明位置和方式.
如果数组在文件范围内声明(在任何函数之外),或者声明为静态,并且没有显式初始值设定项,则数组的内容将初始化为0.
如果数组是在块作用域(在函数或块内)声明并且未声明为静态,并且没有显式初始化器,则数组的内容是不确定的(实际上,垃圾值,其中一些可能是陷阱表示) ).
如果数组已经显式初始化,那么它包含初始化程序中的任何内容.
编辑
在回应下面的注释时,请注意您不应该依赖于块范围变量的隐式初始化.如果需要在创建时将块范围数组清零,请使用初始化程序:
char foo[N] = {0};
当初始化器中的元素少于数组中的元素时,数组中与初始化器中的元素对应的元素将被设置为指定的值;所有剩余的条目将被隐式初始化,就像它们被声明为静态一样.
在上面的示例中,这意味着foo的第一个元素显式设置为0,而所有剩余的元素都隐式设置为0.
原文地址:https://www.jb51.cc/c/117563.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。