我今天看到动态内存申请malloc((int)sizeof(int))这个代码,我想请问一下为什么sizeof前面要强制转换为int

我今天看到动态内存申请malloc((int)sizeof(int))这个代码,我想请问一下为什么sizeof前面要强制转换为int?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7799126
  • 除此之外, 这篇博客: C语言创建动态数组(动态存储区)中的 1. void *malloc(unsigned int size) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    函数作用:开辟一个长度为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;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

这个完全没有必要