这句话是啥意思啊~~~~~~~~~~

来源:百度知道 编辑:UC知道 时间:2024/06/03 03:52:04
int *a=(ElemType)malloc(n*sizeof(ElemType))

这个是用来动态分配空间的,在C语言里面, 数组是在定义的时候就分配了空间,但是用数组会有好多不方便,因为你必须在定义的时候就指明数组的大小,所以当你本来需要的比定义的要大的时候会发生溢出,当你需要的要比定义的少的时候会浪费空间,所以有了malloc的动态分配,这个就是你想定义多大的空间就定义多大的,它的原型是void *malloc(size_t size );括号里面的是你想定义的空间大小,你可以用n*sizeof(ElemType)来代替它,ElemType是指的类型,指一种类型,可以是int,或者是float或者是一个结构体,sizeof可以返回它们在内存中占用空间的长度,n是你要定义几个这样类型的空间供你使用,注意它的返回值,是一个空指针,在C语言里面,空指针可以转换为指向任何类型的指针,所以我们常常在malloc的前面用一个括号把它的返回值强制转换为一个指向你需要的类型的指针,那就是(ElemType *),然后在赋给一个你定义好的指针,那么这个指针就指向了你分配的这块儿空间了,举个例子:
#define N 10
int *p;
p=(int *)malloc(N*sizeof(int));
.....
free(p);
定义了一个整型指针,然后用malloc分配了N(10)个int的空间,malloc返回一个空指针,(int *)将它转换为一个指向int的指针,然后赋值给p,那么p就指向了这块儿刚刚分配的空间,如果在不是很严格的编译器里面,你不加强制类型转换也可以,编译器会自动给你转换,但是在严格一点的编译器上这个会出现错误或者是警告,所以还是要转换一下,注意用malloc分配的空间在使用之后要释放哦,free(p);就可以了~~
希望你听明白了~~~
应该是这样的int *a=(ElemType *)malloc(n*sizeof(ElemType));

5y45

这句话是英格立屎啊!

ElemType 是用户自己定义的一个数据单元,如一个结构体。此语句的意思是,开辟一个内存空间,大小为n乘于ElemType的大小。malloc原本返回的是空指针,但这里强制类型转换为ElemType型。我想如果ElemType 不是