我是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]
之后,每次执行的字符都是随机的,有人可以解释一下这种行为。
答案 0 :(得分:1)
这些随机字符只是内存中的垃圾。您从内存中没有故意写的地方读取内容。
请注意,不应这样做。如果您尝试从内存中进行读取/写入操作,而不是要从中进行读取/写入操作,则操作系统可能会杀死您的应用程序。
答案 1 :(得分:0)
在str [2]之后,每次执行的字符都是随机的,有人可以解释一下这种行为。
这种行为无法解释;它是不确定的,无法在数组的范围内进行读取或写入。由于您已为char
分配了两个str
(一个字母为“ a”,另一个为null终止符),因此超出str[2]
的读取将导致未定义的行为,这意味着任何事情都可以发生,包括从你的鼻子里呼吸出恶魔。