回 帖 发 新 帖 刷新版面

主题:数据结构一书中的  malloc函数?? 蛋疼

typedef struct  LNode 
{
       int    data;//数据域
       struct  LNode  *next;//指针域
} node;
………………
void GreatLink(node *head)//创建一个链表
{
    int elem;
    node *p,*q;
    printf("请输入一系列整数,当输入0时,结束输入:");
    p=head;
    do
    {
        scanf("%d",&elem);
        if(elem!=0)
        {
            [color=FF0000]q=malloc(sizeof(node));//就是这里???????[/color]
            if(q!=NULL)
            {
                q->next=NULL;
                q->data=elem;
                p->next=q;//把结点q放在p之后
                p=q;

            }
        }
    }while(elem!=0);

}

上面有颜色的地方就搞不懂了!可以直接这样搞嘛?
难道就不需要一个类型转换吗?比如   q=(node)malloc(sizeof(node));或者……    


回复列表 (共2个回复)

沙发

严格来讲不能这么做,对C的编译器来说,对于指针的类型存在着一定程度的容忍,在一定范围内会去隐式转换void*,但是对于支持C++的编译器来说,就不会容忍了

板凳


谢了哈,

我来回复

您尚未登录,请登录后再回复。点此登录或注册