【摘要】 p=(int*)malloc(sizeof(int)*(n+1)) malloc 是内存分配分配的空间以字节为单位sizeof(int)*(n+1) 是求一个字节数的过程sizeof(int)就是int类型的字节数,再*(n+1),其实就是连续的n+1个int型数的空间所含的字节数前面二者合起来就是分配了大小为n+...
p=(int*)malloc(sizeof(int)*(n+1))
malloc 是内存分配
分配的空间以字节为单位
sizeof(int)*(n+1) 是求一个字节数的过程
sizeof(int)就是int类型的字节数,再*(n+1),其实就是连续的n+1个int型数的空间所含的字节数
前面二者合起来就是分配了大小为n+1个int型的空间所含的字节数
此时(int*)是强制转化为int型的指针,所以p就是一个指向这连续n+1个int的int指针。这种分配内存的方式是C语言中实现的,为什么不直接指明字节数,
而用sizeof(int)这种运算是因为对于不同的计算机,对于int的分配空间不一定相同,这样有一定的移值性。sizeof就是空间大小,malloc就是分配空间的意思,int整形
int* 将malloc分配的内存空间强制转换为int型的指针。
malloc申请的内存都是空类型 也就是 void * 但是,
这个内存取决于你怎么去使用,所以,将其转换为相应的类型是必要的!
malloc返回的是void*
指针里边存放的只有地址而已 没有指向的内存大小
比如你可以把char *型的指针强制转换成int * 那么引用的时候就会取4个字节的内存
(原来只会取一个字节,这个就是强制转换的意义了吧)
(int *)malloc(sizeof(int)) sizeof(int)=4 int占4个字节
(int *)malloc(sizeof(int *)) sizeof(int *)=4 指针占4个字节
(char *)malloc(sizeof(char)) sizeof(char)=1 char占1个字节
(char *)malloc(sizeof(char *)) sizeof(char *)=4 指针占4个字节
如