我今天看到动态内存申请malloc((int)sizeof(int))这个代码,我想请问一下为什么sizeof前面要强制转换为int?
不知道你这个问题是否已经解决, 如果还没有解决的话:函数作用:开辟一个长度为size的连续空间,函数的返回值是所分配区域的第一个字节的地址,开辟空间失败返回NULL
形参 size 的类型定义为无符号类型,表示开辟空间的长度
要注意该指针的基类型是void,即不指向任何类型的数据。
# include <stdio.h>
/*
前已说明该函数是由stdlib库提供的
即在stdlib.h的头文件中声明的
因此使用前要把stdlib.h头文件包含到程序文件中
*/
# include <stdlib.h>
int main(){
const int N = 5;
int i,j,*p;
// 创建一个长度N*sizeof(int)的空间,可以理解为动态数组int a[N]
// 将地址转换成int * 型,可以省略,因为操作系统会自动进行转化
// 即 int *p = malloc(N*sizeof(int));这样定义也是没有问题的
p = (int*)(malloc(N*sizeof(int)));
// 数组初始化
for(i=0;i<N;i++)
*(p+i) = i+1;
printf("The array (made by malloc) : \n");
for(i=0;i<N;i++)
printf("%-4d",*(p+i));
printf("\n");
return 0;
}
这个完全没有必要