*H=(Linklist )malloc(sizeof(Node))和 p=(linknode*)malloc(sizeof(linknode));

2025-03-01 10:32:39
推荐回答(3个)
回答1:

等号右边是的星是强制类型转换,比如(Linklist*)就是指向Linklist类型的指针。malloc()返回的是没有类型的指针,你要根据等号左边的变量类型决定等号右边的强制转换类型。比如你要赋值给int*类型,等号右边就写(int*),而如果你要赋值给char*类型,等号右边就写(char*)。当然你也可以把一个指针变量赋值给一个整型,那等号右边就写(int)。

等号左边的*完全是对指针类型的使用需要的。举例,p是一个int*类型,
int i = 0;
int *p = &i;
p = (int*)malloc(sizeof(int)); 是给p赋值,也就是p被改为指向malloc()新分配的地址
*p = (int)malloc(sizeof(int)); 是给p所指的整型变量赋值,也就是i的值被改为malloc()新分配的地址

说到底,你对这个不清楚还是对指针的概念掌握的不好,你再找本c语言的书看看指针那部分的讲解吧。

回答2:

类型匹配了,
等号左方有* 证明右方是个指针,
等号左方无* 证明右方是个变量(* 是取值操作),这样做貌似不对滴。

回答3:

这是对的???右边有*是因为左边是指针,右边给指针申请空间后要强制转换成指针的类型