不叶竹 2022-03-29 11:36 采纳率: 100%
浏览 34
已结题

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

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

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-03-29 11:38
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月29日

悬赏问题

  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法