char c[5]="abcde";
char* p = c;
p=p+2;
*p=0;
printf("c[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c,c[4]=%c\n",c[0],c[1],c[2],c[3],c[4]);
printf("main:%s\n",c);
fputs(c,stdout);
输出:
c[0]=a,c[1]=b,c[2]=^@,c[3]=d,c[4]=e
main:ab
ab
可以看到在 p=p+2, * p= 0 后,指针 p 已经成功将 c[2]项释放,但 c[2]之后的 c[3],c[4]仍然没有被改变,
然而此时无论用 printf 还是 fputs 输出字符串 c,为何都只能输出 ab,而不是 ab^@de ?
先谢各位大佬指点!