malloc指派类型格式?

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:46:36
比如说 (int *)malloc(30)
我查过有关资料说 int * 是类型指派 ,可是int后面为什么要加上 *?
难道是malloc新规定的书写格式?前面学类型是没有这个 * 啊

malloc返回的是void*类型。
(int*) 就是将void*类型转成制定的类型

int *p = (int*)malloc(30 *sizeof(int));
p为指针类型, 大小为30个int大小

比如你定义一个指针 int *p,那么这句话是指定对int类型的指针P分配空间,但是如果你写的是int p,那么空间分配是对int类型的变量P指定进行的,写法就应该是(int)malloc(30)

1. int * 是指针类型,它定义的变量可以存放“int类型变量”的地址
2. malloc函数返回一个内存的首地址,也可以说返回了一个空指针,需要强制转换为特定的指针类型,从而可以从这个首地址找到所需类型的值(比如int *就可以从这个地址开始,存取一系列的整型数)。

malloc 都是给指针变量分配单元后变成数组那样使用,所以都带 *

例如:
int *buff;
float *x;
buff = (int *) malloc(30*sizeof(int));
x = (float *) malloc(30*sizeof(float));
// 下面可用 buff[0],buff[1],...buff[29]; x[0],x[1]...x[29];了

总结一下吧
加上*是因为要返回的是新申请的空间的地址
加上 int * 原因就是强制转换
就是说malloc返回的是void *型的指针,所以你必须强制转换成你要使用的类型的地址
你可以这样想,什么类型的分配都要用malloc这一个函数,所以要想得到不同的类型的地址你只能是返回void * 型的,然后使用的时候自己强制转换

malloc函数返回一个内存的首地址,内存地址都是十六进制表示的整数,所以返回值是一个指向整数的整型的指针,即int指针。这和我们经常使用的情况是不冲突的,是一致的。