malloc函数的用法

在数据结构线性顺序表的定义中,
type struct { elemtype *elem;
int length;
int listsize;
} sqlist;
status initlist sqlist_sq(sqlist &l)
{l.elem=(elemtype *)malloc(100*sizeof(elemtype));
//这里l.elem是指针,意思是让malloc函数返回的指针指向的值强制转化成elemtype类型的吗?然后在把指针的值赋给l.elem }
线性链表 typedef struct lnode{ elemtype data;
struct lnode *next;
}lnode,*linklist;
void creatlist_l(linklist &l,int n)
{ l=(linklist)malloc(sizeof(lnode));
...//这里把(linklist)改成(lnode *)行不行?}

1. (elemtype *)malloc(100*sizeof(elemtype)); 的确是你理解的那样。malloc返回的是void*,所以要强制类型转换才可以使用。使用malloc时记得sizeof中指定的类型要与要转换的类型一致。

2.在定义typedef struct lnode时,实际定义了一个实体类型(lnode)和一个指针类型(linklist*),实际上linklist就是lnode的指针,所以你要做的替换时可以的。不过我有点不记得了,很少用struct,替换时可能要使用(struct lnode*),好像C语言中要求这样写。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-11
相似回答