三、动态内存分配


 


  1. #include <stdio.h>

  2. #include <malloc.h>

  3. int main(void)

  4. {

  5. int a[5] = { 4, 10, 2, 8, 6 };

  6. int len;

  7. printf(“请输入你需要分配的数组的长度: len = “);

  8. scanf(“%d”, len);

  9. int *pArr = (int *)malloc(sizeof(int) * len);

  10. //sizeof(int)求得int所占的字节,即为4

  11. //如果不强制转换,malloc只返回第一个字节,强制转换后指向4个字节

  12. *pArr = 4; //类似于a[0] = 4

  13. pArr[1] = 10; //类似于a[1] = 10

  14. free(pArr); //把pArr所代表的动态分配的20个字节的内存释放

  15. return 0;

  16. }

malloc(sizeof(int) * len)指向第一个,需要强制转换来指向前四个

int *pArr = (int *)malloc(sizeof(int) * len);

这句话是把新创建的4Xlen大小的内存的指向前四个内存单元的地址赋给指针pArr,而不是

在pArr里面创建这么大的内存

因此可以用数组pArr[i]来访问每四个内存单元片段的值

  1. //我们可以把pArr当做一个普通数组来使用

  2. for (int i = 0; i < len; ++i)

  3. scanf_s(“%d”, &pArr[i]);

  4. for (int i = 0; i < len; ++i)

  5. printf(“%dn”, *(pArr + i));


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!