p=(int*)malloc(sizeof(int)*(n+1))是什么意思
发布网友
发布时间:2022-05-16 20:06
我来回答
共3个回答
热心网友
时间:2024-03-01 10:50
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的分配空间不一定相同,这样有一定的移值性。不过好像没有弄C了,现在都用java,所以不知道还对不对呵,印象中是这样。
热心网友
时间:2024-03-01 10:51
1、sizeof(int):sizeof是操作符,这里是计算int类型数据所占内存大小,根据不同的系统会有不同的值,在32位机器上其值为4
2、m*n*sizeof(int):m和n应该为变量或预定义值,其计算结果应为一数值
3、malloc(m*n*sizeof(int)):意思是申请上述过程计算的数值大小的内存
4、p应为一指向int类型数组的指针,其值为上述过程分配的内存首地址
热心网友
时间:2024-03-01 10:51
就是给p分配n+1个整数空间
相当于
p
=
new
int(n+1);即p为n+1大小的整数数组!