77问答网
所有问题
L.elem=(ElemType *)malloc(100*sizeof(ElemType));详细解释下,必有重谢!
(ElemType *)着重讲解此处,越详细,分追加越高!!
举报该问题
推荐答案 2014-03-13
malloc在堆上分配可以容纳100个ElemType的内存空间,然后返回指向这个空间起始地址的指针。
malloc返回的指针类型是void *,(ElemType *)是强制类型转换,把这个void类型的指针转换为ElemType类型的指针,然后把这个指针的值赋给L.elem。
C语言规定,void *可以转换为任何类型的指针,所以在C里没有这个强制类型转换不会出错,但是C++对类型要求比较严格,赋值时必须保证两边类型一致,所以需要这个强制类型转换。
虽然C里不需要这个强制类型转换,但是这样是使用指针的良
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/3W3WYvpGqp3qpYWq3I.html
其他回答
第1个回答 2014-03-13
虽然没看见你的全代码,但是我觉得ElemType是个结构!
调用malloc函数向操作系统要个私人堆(通俗点久是要一个结构大小的空间)然后将这个私人堆的首地址赋值给L.elem
第2个回答 2014-03-13
ElemType是个宏定义,许多人喜欢把它定义成int类型,那么ElemType*就是一个整型指针(相当于int*)。这里是为何给ElemType指针L.elen分配内存空间,调用了malloa函数,这个函数返回的是void指针,所以要强制转换成ElemType*。
相似回答
L.elem=(ElemType
*)malloc(100*sizeof(ElemType));详细解释下,必有重
...
答:
malloc
在堆上分配可以容纳
100
个ElemType的内存空间,然后返回指向这个空间起始地址的指针。malloc返回的指针类型是void
*,(ElemType
*)
是强制类型转换,把这个void类型的指针转换为ElemType类型的指针,然后把这个指针的值赋给
L.elem
。C语言规定,void *可以转换为任何类型的指针,所以在C里没有这个强制类...
L.elem=(ElemType
*)malloc(100*sizeof(ElemType));详细解释下,必有重
...
答:
ElemType明显是你程序中自定义的类型别名。
(ElemType )
是将
malloc
返回的内存空间地址转成(ElemType )类型的,再赋给
L.elem
.因为C语言的库函数不可能为每种类型都写不同的申请语句,况且你随时可能要定义新的类型,比如新的结构体,新的枚举类型什么的,所以C语言的库函数malloc把返回类型定为void*,无...
l.elem=(elemtype*)malloc(100*sizeof(elemtype))
答:
ElemType明显是你程序中自定义的类型别名。
(ElemType*)
是将
malloc
返回的内存空间地址转成(ElemType*)类型的,再赋给
L.elem
.因为C语言的库函数不可能为每种类型都写不同的申请语句,况且你随时可能要定义新的类型,比如新的结构体,新的枚举类型什么的,所以C语言的库函数malloc把返回类型定为void*,无...
L.elem=(Elemtype
*)malloc(
LIST_INIT_SIZE
*sizeof(Elemtype));
答:
将
L.elem
这个指针指向一块通过malloc函数分配的内存的地址 这个内存的大小为
Elemtype
这个结构体的
size*
LIST_INIT_
SIZE
的乘积这么大 malloc 是用于分配指定size的内存的库函数 原型:extern void
*malloc(
unsigned int num_bytes);用法:#include <malloc.h> 或#include<stdlib.h> 功能:分配长度为num_...
c程序没有报错,运行时出现应用程序错误,是哪里出问题了,求解。。
答:
{
L.elem=(ElemType*)malloc(100*sizeof(ElemType));
if(!L.elem)exit(0);L.length=0;L.listsize=100; return 1;} 初始化L的时候,你只给elem域分配了内存空间,其它的没有分配空间,但是你却调用了,这个随意指向的地址是不能用写的,也就出现了内存不能written。应该是这样的 int Init...
L.elem=(ElemType*)malloc(
LIST-INIT-
SIZE*si
都ze
of(ElemType))
这句话...
答:
L的elem成员是这个线性表的首元素的地址。这个表达式的意思就是分配一个长度为LIST-INIT-
SIZE
个
ElemType
长度的空间并强制转换为ElemType类型的指针,将该指针的地址赋给
L.elem
。 这样L就是一个已经分配过空间的线性表了,它已经有了一个空的存储空间,可以放LIST-INIT-SIZE个ElemType类型的数据。
malloc函数
的用法
答:
1.
(elemtype
*)malloc(100*sizeof(elemtype));
的确是你理解的那样。malloc返回的是void*,所以要强制类型转换才可以使用。使用malloc时记得sizeof中指定的类型要与要转换的类型一致。2.在定义typedef struct lnode时,实际定义了一个实体类型(lnode)和一个指针类型(linklist*),实际上linklist就是...
大家正在搜
malloc函数详解
malloc debug
malloc_trim
为什么要用malloc
malloc实现
malloc什么时候用
malloc返回
L0
L.A