微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C中char数组成员的默认值是多少?

假设我创建了一个char数组,并假设char数组为空.如果我检查数组中第一个元素的值(arr [0]),这个表达式的结果是什么?

解决方法

这取决于数组的声明位置和方式.

如果数组在文件范围内声明(在任何函数之外),或者声明为静态,并且没有显式初始值设定项,则数组的内容将初始化为0.

如果数组是在块作用域(在函数或块内)声明并且未声明为静态,并且没有显式初始化器,则数组的内容是不确定的(实际上,垃圾值,其中一些可能是陷阱表示) ).

如果数组已经显式初始化,那么它包含初始化程序中的任何内容.

编辑

在回应下面的注释时,请注意您不应该依赖于块范围变量的隐式初始化.如果需要在创建时将块范围数组清零,请使用初始化程序:

char foo[N] = {0};

当初始化器中的元素少于数组中的元素时,数组中与初始化器中的元素对应的元素将被设置为指定的值;所有剩余的条目将被隐式初始化,就像它们被声明为静态一样.

在上面的示例中,这意味着foo的第一个元素显式设置为0,而所有剩余的元素都隐式设置为0.

原文地址:https://www.jb51.cc/c/117563.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐