静思的实验已经给出结果了。我再说明一下,大家看看是不是这样的。
l=(L)malloc(sizeof(L));
第一个参数(L)是类型,第二个参数(L)是大小,两个参数的意义和作用是不一样的。
当第一个参数为实类型时,如node,则需要用node*,而当第一个参数是指针类型时,如L,则不需要*,直接写L。对于这一点大家都没意见。
现在大家的问题在第二个参数上。第二个参数的作用是确定待分配内存空间的大小,仅此而已,和类型没有任何关系。如果你预先知道需要分配的空间大小(如4),你甚至可以直接写sizeof(4),所以后面的参数即可以用L,也可以用node,但不是node*,因为这个表示没有意义。
最后说明,如果大家还是有疑问,请把我的程序复制到VC++或者其它编译器中运行,你们可以试着把l=(L)malloc(sizeof(L))用我给出的四种不同形式替换,看看结果有没有问题。
对于这个问题我本人的讨论到此。