我不知道我做错了什么,或者我的概念是否有些错误
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
p=calloc(3,sizeof(int));
p[0]=10;
p[1]=15;
p[2]=30;
printf("\n%d\n%p\n%d\n%p\n%d\n%p\n\n",p[0],p,p[1],p+1,p[2],p+2);
free(p);
//p=NULL;
printf("\n%d\n%p\n%d\n%p\n%d\n%p\n\n",p[0],p,p[1],p+1,p[2],p+2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当第二个,printf()运行时,它显示p [2] = 30,而p [0] = p [1] = 0(在gcc ubuntu和Code :: Blocks窗口中的一些任意值).我有两个问题.
我是初学者所以请耐心等待.我用malloc()尝试了同样的事情,同样的事情发生了.