首页 > 简单C语言我糊涂了

简单C语言我糊涂了

看图,为什么输出不是ab?


字符串需要有结束符\0(占用一个字节), 所以你需要将bits[2]改成bits[3].

以当前的bit[2]解释原因:
打印字符串会从指定内存一个个字节打印, 直到遇到\0.
因为你只有两个字节, 没有内存存放结束符\0, 不能保证bits + 2位置的内存值就是\0, 所以会继续打印, 直到遇到\0为止.

又因为bits + 2及之后内存的不确定性, 所以你每次的打印结果通常都不一样!


C的字符串是以\0结尾的。
如果是这种的写法的话,就不会有问题了

unsigned char bits[3] = "ab\0";

没有结束这个char数组,会把内存后面的bit也打印出来

【热门文章】
【热门文章】