各位,下面程序的运行结果 是什么

#include
#include

int main(void) {
int p=NULL;
p=(int
)malloc(sizeof(int));
*p=3;
printf("p=%p\n",p);
printf("*p=%d\n",*p);

p=(int*)realloc(p,sizeof(int));
printf("p=%p\n",p);
printf("*p=%d\n",*p);

p=(int*)realloc(p,3*sizeof(int));
printf("p=%p\n",p);
printf("*p=%d\n",*p);

realloc(p,0);
p=NULL;
return 0;

}

 #include<iostream>
using namespace std;
int main(void) {
    int *p=NULL; //修改
    p=(int*)malloc(sizeof(int));//修改
    *p=3;
    printf("p=%p\n",p);
    printf("*p=%d\n",*p);
    p=(int*)realloc(p,sizeof(int));
    printf("p=%p\n",p);
    printf("*p=%d\n",*p);

    p=(int*)realloc(p,3*sizeof(int));
    printf("p=%p\n",p);
    printf("*p=%d\n",*p);

    realloc(p,0);
    p=NULL;
    return 0;
}

运行结果:
p=01017A10
*p=3
p=01017980
*p=3
p=01011A80
*p=3
请按任意键继续. . .

是否被吃掉 * 号了,这个程序 应该编译不过去才对

是不是电脑不同,输出p的值也不同?