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

前端之家收集整理的这篇文章主要介绍了C中char数组成员的默认值是多少?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我创建了一个char数组,并假设char数组为空.如果我检查数组中第一个元素的值(arr [0]),这个表达式的结果是什么?

解决方法

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

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

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

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

编辑

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

char foo[N] = {0};

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

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

猜你在找的C&C++相关文章