因为访问了未知的内存。
10个字节是可分配的,这意味着您可以根据需要访问和修改这10个字节。如果索引大于10,则有可能存在一个不经常使用的区域,可能是其他变量所在的区域,也可能比程序使用的区域大(在这种情况下,程序会崩溃)。简而言之,超出范围的条目的后果是不可预测的,从使程序崩溃到在最坏的情况下通过更改关键变量的值导致程序错误。
题外话:
关于指针:p[11]正好是*(p+11),而p是一个整数,这个number表示该位置所指向的内存中的字节数。您可以使用以下代码来检查该数字的值:
结果是一个十六进制数。不管怎样,如果你想查看内存中第n个字节的值,只需
这个一看就可以发现指针和整数没有区别*sizeof(char));
scanf("%s",p);
printf("%s\n",p);
//..
上一篇:c语言malloc申请内存失败
下一篇:malloc申请内存失败原因