第二个输出为什么是随机的?这两个有什么区别

char stf=【"abc"】;
char str=【'a','b','c'】;
printf("%d\n",strlen (stf));
printf(“%d\n”,strlen(str));

【---大括号吧?你这是怎么输入进来的?
char * stf = "abc";
char * str = {'a','b','c'};
这两个写法是不一样的,第一种写法实际stf有四个字符,包括字符串结束符'\0',而第二个没有。
所以第一个用strlen肯定结果是3,因为strlen是从数组开始向后找到第一个字符串结束符'\0'为止。这也就是第二种写法长度随机的原因。因为str本身没有'\0'字符,所以strlen函数会一直向后面的内存中找'\0'字符,但这个字符在哪就不是你这个程序能控制的,因此会随机。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632