容易c

简单c
p=(int *)malloc(sizeof(int[10]));这个返回的是啥?详细讲解下,谢谢

------解决方案--------------------

int size = sizeof(int[10]) ;//返回40
void *p = malloc(size);//分配一个40个BYTE的指针;
int *pn = (int*)p;//然后p指针转换成int*
//其实也就是pn指向一个可以容纳10个int的buffer.

------解决方案--------------------
malloc returns a void pointer to the allocated space, or NULL if there is insufficient memory available
------解决方案--------------------
C++不允许讲void* 赋值给任何非void* 指针,所以需要强制转换, 但是C则没有这种限制!


引用:
Quote: 引用:


int size = sizeof(int[10]) ;//返回40
void *p = malloc(size);//分配一个40个BYTE的指针;
int *pn = (int*)p;//然后p指针转换成int*
//其实也就是pn指向一个可以容纳10个int的buffer.


int *pn = (int*)p;//这一步我需要打括号吗?我觉得不需要啊?我看到的很多我发的那个程序,都有括号,请问是为什么呢,谢谢

------解决方案--------------------
mallocs是C语言里面的一个动态分配内存的函数,原型是这样的:
void* malloc (size_t size);
size为要分配的空间大小,单位是字节。
如果分配成功则返回一个void类型的指针指向该内存的首地址,
一般会转换成自己需要的指针类型,比如
int * number = (int *)malloc(sizeof(int));

如果分配失败,则返回空。