在c语言中控制台上,想必大家都遇到过烫烫烫乱码的问题,今天给大家带来一种关于”烫“乱码的一种情况,即当函数中定义及初始化的字符串,返回到主函数中,控制台输出乱码:
function为自定义函数,当函数返回str[0]中的字符串。在主函数中输出,则就会产生乱码的问题;
为什么会导致乱码呢,首先,在c语言中,字符串数组名称就代表了该字符串的首地址,当字符串数组定义在function()中,内存中就为数组开辟一个地址,但这个字符串数组仅属于在function()未结束之前,当程序跑到return str[0];后,该函数在内存中自动销毁回收,其定义的字符串数组的地址也因此会销毁,故再回到主函数中,返回的就不是str[0]的值已经改变,所以会乱码。
解决方法:
可以直接把数组定义为全局变量,这样当function()销毁之后,数组不会进行销毁,数组的地址也不会被改变。但局部的function()内部也可以引用数组,也可以修改数组中的值。