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

Nan*_*pan 2 c

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

char buffer [512];
Run Code Online (Sandbox Code Playgroud)

某个点之后的此变量被修改为此

buffer [40] = '\0';
Run Code Online (Sandbox Code Playgroud)

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

Evi*_*ach 5

不会.它将值NUL存储在阵列中的第41个位置.

将前40个字符初始化为NUL

memset(buffer, '\0', 40);
Run Code Online (Sandbox Code Playgroud)

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

char buffer[512] = {0}; 
Run Code Online (Sandbox Code Playgroud)

要么

char buffer[512] = "";
Run Code Online (Sandbox Code Playgroud)

要在运行时初始化它,请尝试

memset(buffer, '\0', sizeof (buffer));
Run Code Online (Sandbox Code Playgroud)