L.elem=(ElemType *)malloc(100*sizeof(ElemType));详细解释下,必有重谢!

(ElemType *)着重讲解此处,越详细,分追加越高!!

malloc在堆上分配可以容纳100个ElemType的内存空间,然后返回指向这个空间起始地址的指针。
malloc返回的指针类型是void *,(ElemType *)是强制类型转换,把这个void类型的指针转换为ElemType类型的指针,然后把这个指针的值赋给L.elem。
C语言规定,void *可以转换为任何类型的指针,所以在C里没有这个强制类型转换不会出错,但是C++对类型要求比较严格,赋值时必须保证两边类型一致,所以需要这个强制类型转换。
虽然C里不需要这个强制类型转换,但是这样是使用指针的良
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-13
虽然没看见你的全代码,但是我觉得ElemType是个结构!
调用malloc函数向操作系统要个私人堆(通俗点久是要一个结构大小的空间)然后将这个私人堆的首地址赋值给L.elem
第2个回答  2014-03-13
ElemType是个宏定义,许多人喜欢把它定义成int类型,那么ElemType*就是一个整型指针(相当于int*)。这里是为何给ElemType指针L.elen分配内存空间,调用了malloa函数,这个函数返回的是void指针,所以要强制转换成ElemType*。
相似回答