> 文章列表 > 第七天:C语言动态内存分配

第七天:C语言动态内存分配

第七天:C语言动态内存分配

目录

1. 动态内存分配函数

2. 动态内存分配的注意事项

3. 实例:动态分配数组


        在前六天的学习中,您已经掌握了C语言的基本知识、控制结构、数组、字符串、函数和指针。今天,我们将学习C语言的动态内存分配。动态内存分配是在程序运行期间根据需要分配内存空间的过程。

1. 动态内存分配函数

C语言提供了四个动态内存分配函数:

  • malloc:分配指定字节数的内存,并返回指向这块内存的指针。例如:

  • int *ptr = (int *)malloc(10 * sizeof(int)); // 分配10个整数的内存空间

    calloc:分配指定数量和大小的内存,并将内存初始化为零。例如:

  • int *ptr = (int *)calloc(10, sizeof(int)); // 分配并初始化10个整数的内存空间
    

    realloc:调整已分配内存的大小。例如:

  • ptr = (int *)realloc(ptr, 20 * sizeof(int)); // 调整内存大小为20个整数
    

    free:释放已分配的内存。例如:

  • free(ptr); // 释放内存

2. 动态内存分配的注意事项

  • 在使用动态内存分配函数时,需要检查返回的指针是否为NULL,以确保内存分配成功。

  • 动态内存分配的内存需要手动释放,否则会导致内存泄漏。

现在,您已经学会了C语言的动态内存分配。接下来,我们将通过一个简单的实例来巩固今天的学习内容。

3. 实例:动态分配数组

目标:写一个C程序,动态分配一个整数数组,输入数组元素,计算数组元素的和,并释放内存。

  1. 1 使用文本编辑器创建一个新的文件,将其命名为dynamic_array.c

  2. 2 在dynamic_array.c文件中输入以下代码:

  3. #include <stdio.h>
    #include <stdlib.h>int main() {int n, sum = 0;int *ptr;// 输入数组大小printf("Enter the number of elements: ");scanf("%d", &n);// 分配内存ptr = (int *)malloc(n * sizeof(int));// 检查内存分配是否成功if (ptr == NULL) {printf("Memory allocation failed.\\n");return 1;}// 输入数组元素printf("Enter the elements: ");for (int i = 0; i < n; i++) {scanf("%d", &ptr[i]);}// 计算数组元素的和for (int i = 0; i < n; i++) {sum += ptr[i];}// 输出结果printf("Sum: %d\\n", sum);// 释放内存free(ptr);return 0;
    }
    
  4. 3 保存文件,然后关闭文本编辑器。

  5. 4 根据前面学习的命令行编译和运行方法,编译并运行dynamic_array.c程序。

  6. gcc dynamic_array.c -o dynamic_array

    5 运行程序并输入数组大小和元素,查看计算结果。

  7. ./dynamic_array

        恭喜您!您已经完成了7天C语言零基础入门课程的学习。通过本课程,您已经掌握了C语言的基本知识、控制结构、数组、字符串、函数、指针和动态内存分配等核心概念。希望这个课程对您今后的编程学习和职业发展有所帮助!