標籤:c 指標 動態分配
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;}}
3、編寫一個函數,動態儲存裝置一列輸入的char。
#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++;}//追加一個NULarray = (char *) realloc (array , (length++) * sizeof(char));if (array == NULL)exit (EXIT_FAILURE);array[length - 1] = '\0';return array;}
C和指標 (pointers on C)——第十一章:動態記憶體分配(下)習題