请教大家,今天遇到一个很奇怪的bug,颠覆了我的认知,现象是这样:我用单片机连接蓝牙,发送一个字符数组到蓝牙串口助手,这个字符数组的初始化形式为char str[20] = {"hello"} 或 char str[20]={'h'};我就去发送这个数组里面的内容,长度为sizeof(str)。结果是:上位机得到我发送的数据的同时也把字符数组剩余空间的内容一起发上来,而且是乱码,
这里就有两个问题:
1,全局位置的字符数组如果不去初始化,会被自动初始化吗?
如果初始化了,剩余没有值的空间内容又是什么?
2,如果我定义长度为100的全局字符数组,尾巴上长度为50的空间如果不使用会被系统占用或者分配导致乱码吗?
我一直认为:1,全局变量如果没初始化,也会自动初始化为0,即使只初始化一部分空间,剩余的部分也会初始化为0 2,针对上面的第二个问题,如果后面长度为50的空间未被使用,也一定不会被系统占用或者分配,因为这部分空间是划分给这个数组的,也就只有这个数组才能使用这个空间
论坛的家人们,又是向你们请教的一天 |