C++字符数组初始化,第一个字符赋值为0,了解一下下面的value值以及和filename[0]=

C++字符数组初始化,第一个字符赋值为0,了解一下下面的value值以及和filename[0]=NULL的区别,谢谢啦~

NULL 不能赋值给 char 数组,因为 NULL 在 C++ 里面被定义为 (LPVOID)0,是一个指向进程虚拟空间中受保护的区域;第一个字符赋值为 0 是为了防止标准 C++ 库的字符串函数计算字符串长度时出错;正确的初始化方法应该是 char string[ n ] = { 0 };其中 n 是你的字符串长度,这样子编译器会自动帮你把整个数组清空为 0,而 string[ 0 ] = 0 只会把第一个元素清零,其余元素的指随机;追问

非常感谢~

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-11-27
根据NULL的定义(#define NULL 0),所以NULL与0是等价的。
根据字符串的定义(遇0结束),所以第一个字符赋0表示将字符串置空Filename为""追问

‘\0`和0一样吗。

追答

也是一样的

追问

还想问一下,您注意到那个value值了吗?第一个是0 ‘ ` 下面的是-52 ‘?后面的是为什么啊?

本回答被提问者采纳