我今天看到动态内存申请malloc((int)sizeof(int))这个代码,我想请问一下为什么sizeof前面要强制转换为int?
2条回答 默认 最新
关注不知道你这个问题是否已经解决, 如果还没有解决的话:- 这个问题的回答你可以参考下: 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; }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报