C语言中动态数组的实现
程序员文章站
2023-02-02 09:46:13
c语言中动态数组的实现
在c语言中,数组的长度在定义变量的时候便需要指定,并且只能是一个常数,不能是其它变量。所以,一旦定义了一个数组,将为它分配一个固定大小的空间,以后都不能改变,这样的数组称为静...
c语言中动态数组的实现
在c语言中,数组的长度在定义变量的时候便需要指定,并且只能是一个常数,不能是其它变量。所以,一旦定义了一个数组,将为它分配一个固定大小的空间,以后都不能改变,这样的数组称为静态数组。
但在某些时候,我们需要的数组的长度是无法预先确定的,要解决这样的限制,需要使用动态数组。动态数组是相对于静态数组而言。动态数组的内存空间是从堆(heap)上分配的,是在执行代码过程中分配的,当程序执行到这些语句时,才为其分配。注意,程序员自己负责释放内存。
创建动态数组的例子如下所示:
#include<stdio.h> #include<stdlib.h> int main(){ int arrlen; //数组的长度 char *array; //数组指针 char c; int i; printf("please set the size of the array:"); scanf("%d",&arrlen); // 动态分配内存空间,如果失败就退出程序 array = (char*)malloc( arrlen*sizeof(char) ); if(!array){ printf("创建数组失败!\n"); exit(1); } // 向内存中写入数据 for(i=0; i<arrlen; i++){ c =getchar(); array[i] = c; //*array++ =c;是通过指针对数组进行操作,也是可以的。 } // 循环输出数组元素 for(i=0; i<arrlen; i++){ printf("%c ", array[i]); } printf("\n"); free(array); //释放内存 system("pause"); return 0; }
运行结果,是你手动输入的字母。
malloc()是用来动态分配制定大小的内存空间。
free()是用来释放整块内存。