char s1[]="a";给它分好内存位置了,但是你如果对后面(s1+2)的指针进行操作,实际上已经是内存溢出了,理论上是不允许的。你可以用动态数组的方式,calloc()这个函数可以扩充,重新分配个内存空间给这个数组
你这样属于是越界访问,会造成不可预知后果。大型程序都是这种情况会造成不稳定,很奇怪的崩溃。要禁止。有帮助请采纳谢谢!