C 动态分配内存 | 您所在的位置:网站首页 › c语言获取内存地址mi › C 动态分配内存 |
C 标准库 C 语言指针与函数
C 动态分配内存
在本教程中,您将学习使用标准库函数:malloc(),calloc(),free()和realloc()在C语言程序中动态分配内存。 如您所知,数组是固定数量的值的集合。声明数组的大小后,您将无法更改它。 有时,您声明的数组的大小可能不足。要解决此问题,可以在运行时手动分配内存。这在C语言编程中称为动态内存分配。 可以使用标准库函数malloc(),calloc(),realloc()和free(),进行动态分配内存。这些函数在头文件中定义。 C malloc()名称“ malloc”表示内存分配。 malloc()函数保留一个指定字节数的内存块。 并且,它返回一个void指针,可以将其转换为任何形式的指针。 malloc()的语法ptr = (castType*) malloc(size);示例 ptr = (float*) malloc(100 * sizeof(float));上面的语句分配了400字节的内存。因为浮点数的大小是4字节。并且,指针ptr保存分配内存中的第一个字节的地址。 如果无法分配内存,则表达式将产生NULL指针。 C calloc()名称“ calloc”表示连续分配。 malloc()函数分配内存,并保留未初始化的内存。 而calloc()函数分配内存并将所有位初始化为零。 calloc()的语法ptr = (castType*)calloc(n, size);示例: ptr = (float*) calloc(25, sizeof(float));上面的语句在内存中为25个float类型的元素分配连续空间。 C free()使用calloc()或malloc()动态分配的内存不会自己释放。必须显式地使用free()来释放空间。 free()的语法free(ptr);该语句释放由ptr指向的内存中分配的空间。 示例1:malloc()和free()//程序来计算用户输入的n个数字的总和 #include #include int main() { int n, i, *ptr, sum = 0; printf("输入元素数量: "); scanf("%d", &n); ptr = (int*) malloc(n * sizeof(int)); // 如果无法分配内存 if(ptr == NULL) { printf("错误! 内存未分配。"); exit(0); } printf("输入元素: "); for(i = 0; i |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |