c - 在未定义长度字符数组的超出范围上打印奇怪的字符

标签 c

我对 C 还很陌生,我尝试过以下代码

#include <stdio.h>

int main ()
{
  char str[] = "a";
  for(int x = 0; x < 20; x++)
  {
    printf("%c\t%d\n", str[x],str[x]);
  }
  return 0;
}

为此我得到以下输出

a   97
    0
    0
s   115
<   60
�   -62
)   41
P   80
�   -42
�   -128
0   48
�   -41
>   62
�   -119
�   -88
U   85
    0
    0
�   -105
�   -85

str[2]之后每次执行的字符都是随机的,有人可以解释一下这种行为吗?

最佳答案

这些随机字符只是内存中的垃圾。您从内存中并非有意写入的位置读取。

请注意,不应该这样做。如果您尝试读取/写入您不应该读取/写入的内存,操作系统可能会终止您的应用程序。

关于c - 在未定义长度字符数组的超出范围上打印奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56619985/

相关文章:

将文本文件转换为 CSV 文件的 C 程序

c - 字符串 c 的二叉树

c++ - 阻止访问 Windows 上的物理地址

c - GstMultifilesink 后消息回调

将 unix 时间戳转换为 YYYY-MM-DD HH :MM:SS

进程last-request-cpu的PHP-FPM池状态

C 语言 - 这可能是段错误,但我不确定?

sql - 从 Postgres C API 中的复合类型数组访问列

C编程,自上而下,出发时间

c - 为什么我会收到有关链表内字符数组的错误?