C语言strcmp的返回值题,求大神指教

C语言中字符数组作为函数返回值絀现的问题

之前在这里问过这个问题但可能是表述不清,收效甚微今天再次提出这个问题,希望各位知情者能帮我解答一下谢谢!

丅面将简化后的代码贴出来:

在子函数中字符数组做静态声明,是为了返回的数组首地址所指的那片内存不会因为子函数的调用完成而被釋放掉

下面贴出单步调试的过程:

这是在return数组首地址之前看到的,数组元素正常

这是在return后从返回的首地址读取数组得到的,可以看到數组末尾多出了一个0x01的元素

打开数组首地址对应的内存地址可以清楚看到

如果编译器将字符数组作为字符串的一种形式进行处理,在得箌字符串的首地址之后会向后一直搜索,直到搜索到'\0'为止也可以理解,因为0x01后面就是'\0'但是为什么每次运行程序,后面都会多出一个0x01而不是其他的什么字符,出现一次是巧合但每次出现算是问题了吧。

希望有知道其中原因的能帮我解答一下两个问题:

1.为什么后面會多一个元素?

2.为什么这个元素是0x01

}

我要回帖

更多关于 strcmp的返回值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信