malloc的什么时候必须使用它?
先定义
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode
那么
LNode *p;
和
LNode *p=(LNode *)malloc(sizeof(LNode));
有什么区别?
如何实现下面这个函数:
MakeNode(LNode *p,ElemType e);
//分配由p指向的值为e的结点,并返回OK;若分配失败,则返回ERROR
我这样做就会出错的:
#define ElemType int
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define NULL 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode;
main()
{
LNode p;
Status MakeNode();
if(MakeNode(&p,3))
printf("\nstart:\np.data:%d,p.next:%d",p.data,p.next);
}
Status MakeNode(LNode *p,ElemType e)
{
p=(LNode *)malloc(sizeof(LNode));
if(!p) return ERROR;
p->data=e;
p->next=NULL;
return OK;
}