三、动态内存分配
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int a[5] = { 4, 10, 2, 8, 6 };
int len;
printf(“请输入你需要分配的数组的长度: len = “);
scanf(“%d”, len);
int *pArr = (int *)malloc(sizeof(int) * len);
//sizeof(int)求得int所占的字节,即为4
//如果不强制转换,malloc只返回第一个字节,强制转换后指向4个字节
*pArr = 4; //类似于a[0] = 4
pArr[1] = 10; //类似于a[1] = 10
free(pArr); //把pArr所代表的动态分配的20个字节的内存释放
return 0;
}
malloc(sizeof(int) * len)指向第一个,需要强制转换来指向前四个
int *pArr = (int *)malloc(sizeof(int) * len);
这句话是把新创建的4Xlen大小的内存的指向前四个内存单元的地址赋给指针pArr,而不是
在pArr里面创建这么大的内存
因此可以用数组pArr[i]来访问每四个内存单元片段的值
//我们可以把pArr当做一个普通数组来使用
for (int i = 0; i < len; ++i)
scanf_s(“%d”, &pArr[i]);
for (int i = 0; i < len; ++i)
printf(“%dn”, *(pArr + i));
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!