遵循原则
→ 在创建的时候从外层往里层,逐层创建;
→ 释放的时候从里层往外层,逐层释放。
构建所需函数
函数原型 | 返 回 | 功能说明 |
void *malloc(unsigned int size); | 成功:返回所开辟空间首地址 失败:返回空指针 | 向系统申请 size字节的堆空间 |
void *calloc(unsigned int num, unsigned int size); | 成功:返回所开辟空间首地址 失败:返回空指针 | 按类型申请num个size字节的堆空间 |
void free(void *p); | 无返回值 | 释放p指向的堆空间 |
void *realloc(void *p,unsigned int size); | 成功:返回新开辟空间首地址 失败:返回空指针 | 将p指向的堆空间变为 size |
(详细见:https://www.runoob.com/w3cnote/c-dynamic-array.html)
eg:创建一维数组
#include <stdio.h> #include <stdlib.h> int main() { int n1,i; int *array; printf("请输入所要创建的一维动态数组的长度:"); scanf("%d",&n1); array=(int*)calloc(n1,sizeof(int)); for(i=0;i<n1;i++) { printf("%d ",array[i]); } printf(" "); for(i=0;i<n1;i++) { array[i]=i+1; printf("%d ",array[i]); } free(array);//释放第一维指针 return 0; }
结果如下
转自