/* 动态数组的实现 */ #include #include /* 分配数组 */ void * alloc_array(void * p, const int n, const int size) { p = malloc(size * n); if (NULL == p) { printf("Error when allocting memory.\n"); exit(0); } memset(p, 0, size * n); /* 将数组空间清0 */ return p; } /* 释放数组 */ void free_array(void * p) { free(p); p = NULL; } int main(void) { int * p = NULL; int n = 5; int i = 0; /* 使用alloc_array函数为p从堆上分配一个数组空间 */ p = (int *) alloc_array(p, n, sizeof(int)); /* 使用循环语句从标准输入为数组赋值 */ printf("Please input %d numbers:\n", n); for (i = 0; i < n; ++i) scanf("%d", &p[i]); /* 输出数组元素内容 */ printf("Print the element in this array:\n"); for (i = 0; i < n; ++i) printf("%4d", p[i]); printf("\n"); free_array(p); return 0; }