这段代码试图读取一行字符串并反向输出。它先计算字符串长度,然后用指针从末尾向前遍历并打印每个字符。 - 在 while 循环中,当指针 p 指向字符串的第一个字符(即 a[0])并执行 p-- 后,p 会指向 a[-1],这是一个无效的内存位置。此时 *p 的值是未定义的,循环可能不会按预期停止,导致输出乱码或程序崩溃。你需要考虑如何让指针在到达字符串开头之前就停止循环。 - 另外,如果输入是空字符串(直接按回车),len 会是 0,那么 p = &a[-1] 也是无效的。你需要处理这种情况,确保程序不会访问数组边界之外的内存。