动态分配内存calloc()

作者:追风剑情 发布于:2019-11-26 20:46 分类:C

       和malloc()类似,在ANSI之前,calloc()也返回指向char的指针;在ANSI之后,返回指向void的指针。如果要储存不同的类型,应使用强制类型转换运算符。calloc()函数接受两个无符号整数作为参数(ANSI规定是size_t类型)。第1个参数是所需的存储单元数量,第2个参数是存储单元的大小(以字节为单位)。calloc()函数还有一个特性:它把块中的所有位都设置为0(注意,在某些硬件系统中,不是把所有位都设置为0来表示浮点数0)。free()函数也可用于释放calloc()分配的内存。动态内存分配是许多高级程序设计技巧的关键。有些编译器可能还提供其他内存管理函数,有些可以移植,有些不可以。

示例

  1. //Visual Studio中加上这句才可以使用scanf()
  2. //否则只能使用scanf_s()
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <ctype.h>
  7. //malloc()、free()
  8. #include <stdlib.h>
  9.  
  10. //argc: 参数个数 argv[]: 参数数组
  11. //int main(int argc, char **argv)
  12. int main(int argc, char *argv[])
  13. {
  14. long * newmem;
  15. newmem = (long *)calloc(10, sizeof(long));
  16. for (int i = 0; i < 10; i++)
  17. newmem[i] = i;
  18.  
  19. for (int i = 0; i < 10; i++)
  20. printf("%ld ", newmem[i]);
  21.  
  22. putchar('\n');
  23.  
  24. for (int i = 0; i < 10; i++)
  25. *(newmem + i) = i + 10;
  26.  
  27. for (int i = 0; i < 10; i++)
  28. printf("%ld ", newmem[i]);
  29.  
  30. free(newmem);
  31.  
  32. putchar('\n');
  33. system("pause");
  34. return 0;
  35. }


运行测试
111.png

标签: C语言

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号