1、编写calloc,内部用malloc。
void *calloc (size_t n, size_t size) { char * memory; memory =(char*) malloc(n * size); while( memory != NULL) { char * ptr; ptr = memory; while ( --n >= 0) { *ptr++ = '\0'; } } return memory; }2、编写一个函数,动态存储一列输入的整数。
#include <stdlib.h> int * readints() { int *array; int value; int length = 1; array = (int *) malloc(length * sizeof(int)); if (array == NULL) { return NULL; } while ( scanf_s("%d", &value) == 1) { length++; array =(int *) realloc(array, length * sizeof(int)); if (array == NULL) { return NULL; } array[length-1] = value; } }
#include "stdlib.h" char * readstring() { char *array; char *ptr; int length = 1; array = (char *) malloc (sizeof(char)); gets(ptr); if (ptr == NULL) { exit (EXIT_FAILURE); } while (*ptr != NULL ) { length++; array = (char *) realloc (array , length * sizeof(char)); if (array == NULL) exit (EXIT_FAILURE); array[length - 1] = *ptr; ptr++; } //追加一个NUL array = (char *) realloc (array , (length++) * sizeof(char)); if (array == NULL) exit (EXIT_FAILURE); array[length - 1] = '\0'; return array; }
C和指针 (pointers on C)——第十一章:动态内存分配(下)习题
原文地址:http://blog.csdn.net/liyakun1990/article/details/38070689