使用malloc() 来申请动态数组,但是记得当不需要数组的时候,要及时在程序当中对申请的空间进行释放。
#include <stdio.h>
#include <malloc.h>
char *alloc_array_init(); //使用malloc首先申请一个最基本的内存空间
void alloc_array_add(char *p,int total_element,char c); //向申请的内存空间里面填数据
void alloc_array_show(char *p); //打印数组
int main(void){
char *alloc_array,*pr_alloc_array;
alloc_array = alloc_array_init();
for( int i = 0; i < 8; i++){
alloc_array_add(alloc_array, 8, 'a'+i);
}
alloc_array_show(alloc_array);
free(alloc_array); //当不需要这个数组的时候,要及时释放内存,以防止造成内存泄漏。
printf("\r\r\n%d",alloc_array[50]);
alloc_array_show(alloc_array);
return 0;
}
char *alloc_array_init(){
int total_element = 8; //初始空间的长度,单位是字节数
char * alloc_array; //用来接收malloc申请下来的内存空间的初始地址
alloc_array = malloc(4); //申请内存空间
return alloc_array;
}
void alloc_array_add(char *p,int total_element,char c){
static int now_element = 0; //创建一个局部静态变量,用来显示内存空间填充了多少位(单位就是自己定义的类型)
char * array = p; //用来外部传来的内存空间的起始地址
if(now_element > total_element-1){ //判断添加的字节数是否超出初始的内存大小
array = (char *)realloc(p, 1); //当得知此时添加的内存字节数超出了初始定义的内存大小,则使用realloc()函数对内存空间在原来的基础上进行延伸。
if(NULL == array)
printf("expand array is failed!");
else
p = array; //只有当内存申请成功以后,才可以把
}
p[now_element] = c;
p[now_element+1] = '\0';
now_element++;
}
void alloc_array_show(char *p){
char *pr;
for(pr = p; *pr != '\0'; pr++){
printf("%c ",*pr);
}
}