关于指针初始化的有关问题

关于指针初始化的问题?#includestdio.htypedef struct node{int datastruct node *next}Nodevoid ini

关于指针初始化的问题?
#include"stdio.h"
typedef struct node{
int data;
struct node *next;
}Node;
void initList(Node *p)
{
p=(struct node *)malloc(sizeof(struct node));
p->data=3;

}
main()
{
Node *p;
initList(p);
printf("%d",p->data);

}
这个程序,为什么最后输出不是3?而是一个随机数?
还有就是在TC环境下编写C语言程序,有时候并不需要给指针赋初值但是还是可以照常运行,在c++里面不行,这是TC编译环境自身的原因吗?

[解决办法]

C/C++ code
#include<stdio.h>typedef struct node{int data;struct node *next;}Node;void initList(Node **p){  *p=(struct node *)malloc(sizeof(struct node));  (*p)->data=3;}int main(){Node *p;initList(&p);printf("%d",p->data);return 0;} //是你个人理解方面的问题,你理解有误罢了。