malloc函数中的*号?

来源:百度知道 编辑:UC知道 时间:2024/05/15 15:59:05
书上说malloc的语法是:指针名=(数据类型*)malloc(长度)
在malloc前有个*号,但在数据结构中开辟链表结点空间时却是写
p=(LinkList)malloc(sizeof(LNode)) *号没了 这不是语法错误吗?
搞不懂?

呵呵,malloc的语法是:指针名=(数据类型*)malloc(长度),这里的(数据类型*)表示指针,malloc函数返回动态内存的地址。
p=(LinkList)malloc(sizeof(LNode)) 这里LinkList本身就是一个指针,所以不需要加*了。

因为你的LinkList是类型的别名,实际上是
typedef linklist* LinkList;

这个函数是在内存种申请一块连续的空间,也就是一个连续的地址,有些本身就是一个地址,所以不要加*,而有的就要,这和scanf一样,当输入的是一个字符串,就不用取地址,而是其他的数据类型就要取地址.