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

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

解决方法

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

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

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

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

编辑

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

char foo[N] = {0};

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

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...