将char数组初始化为' \ 0&#39 ;?时会发生什么?

时间:2011-11-18 03:13:48

标签: c

我有一个大小为512的字符数组,即

char buffer [512];

此点后的变量被修改为此

buffer [40] = '\0';

这个赋值对变量做了什么?它是否将数组中的前40个char初始化为null?

3 个答案:

答案 0 :(得分:5)

没有。它将值NUL存储在数组中的第41个位置。

将前40个字符初始化为NUL

memset(buffer, '\0', 40);

要在编译时将整个缓冲区初始化为NUL,请尝试

char buffer[512] = {0}; 

char buffer[512] = "";

要在运行时启动它,请尝试

memset(buffer, '\0', sizeof (buffer));

答案 1 :(得分:3)

它将数组中的第41个字符分配给\0。因此现在字符串由字符在数组的前40个元素中表示的内容组成,即0到39个索引(假设前面任何元素中没有其他NUL个字符 - 谢谢Kerrek SB !!)。
希望这有帮助!

答案 2 :(得分:1)

它将字符'\0'(即NUL字符)分配给第41个数组元素。