第七天:C语言动态内存分配
目录
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 使用文本编辑器创建一个新的文件,将其命名为
dynamic_array.c
。 -
2 在
dynamic_array.c
文件中输入以下代码: -
#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; }
-
3 保存文件,然后关闭文本编辑器。
-
4 根据前面学习的命令行编译和运行方法,编译并运行
dynamic_array.c
程序。 -
gcc dynamic_array.c -o dynamic_array
5 运行程序并输入数组大小和元素,查看计算结果。
-
./dynamic_array
恭喜您!您已经完成了7天C语言零基础入门课程的学习。通过本课程,您已经掌握了C语言的基本知识、控制结构、数组、字符串、函数、指针和动态内存分配等核心概念。希望这个课程对您今后的编程学习和职业发展有所帮助!