简单C语言我糊涂了

看图,为什么输出不是ab?
请输入图片描述

回答:

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

以当前的bit[2]解释原因:

打印字符串会从指定内存一个个字节打印, 直到遇到\0.

因为你只有两个字节, 没有内存存放结束符\0, 不能保证bits + 2位置的内存值就是\0, 所以会继续打印, 直到遇到\0为止.

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

回答:

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

回答:

C的字符串是以\0结尾的。

如果是这种的写法的话,就不会有问题了

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

以上是 简单C语言我糊涂了 的全部内容, 来源链接: utcz.com/p/194086.html

回到顶部