calloc = malloc+memset 但是推薦calloc
calloc分配內存,也初始化
malloc只分配內存,不初始化
memset只能用來初始化
在刷題中對數組初始化
int arr[10] = {0}//10可能是個很大的值,提交不對
要么利用循環進行初始化
要么用calloc或者malloc+memset
推薦使用calloc
calloc 在stdlib.h的頭文件中
calloc原型
void *calloc(size_t nitems, size_t size),
nitems -- 要被分配的元素個數,
size -- 元素的大小。
// 用法 動態分配一個數組,數組有10個int型元素,每個都是0
int *arr = (int *) calloc(10, sizeof(int))
memset在string.h中
void *memset(void *str, int c, size_t n)
str -- 指向要填充的內存塊。
c -- 要被設置的值。該值以 int 形式傳遞,但是函數在填充內存塊時是使用該值的無符號字符形式。
n -- 要被設置為該值的字節數。
用法
int *arr = new int[10]; // 動態
或者
int arr[10]; //靜態分配數組
// 將數組所有元素初始化為0
memset(arr,0,sizeof(int)*10);
int *arr2 = (int *)malloc(sizeof(int)*10);// 動態分配10個int的空間
memset(arr2, 0,sizeof(int)*10); // 給10個int初始化為0