为什么这里*(b+i)=‘\0’是在b数组后加有效字符?

img


我认为'\0'也占了一个位置,不应该在复制的最后一个字符之后加\0吗?为什么将\0赋给了b+i呢

要知道,你圈起来的*(b+i)和上一行的 *(b+i)不是同一个东西,因为上一行的是循环内部的,
也就是说,跳出循环的那个 i,并没有执行 * (b+i)= * (a+i)这一句
所以说跳出循环时, *(b+i)是没有值的
所以你圈起来的这个就是复制的最后一个字符后面

前面循环以及把字符数组a中所有非零字符都拷贝到字符数组b中,但b数组中的字符串结尾仍然需要一个'\0'字符