天天看點

C語言之calloc函數

【FROM MSDN && 百科】

原型: void *calloc(size_t  n,size_t size);

#include<stdlib.h>或#include <malloc.h>

在記憶體的動态記憶體區中配置設定n個長度為size的連續空間,函數傳回一個指向配置設定起始位址的指針;如果配置設定不成功,傳回NULL。

與malloc的差別是:calloc在動态配置設定完記憶體後,自動初始化該記憶體空間為零,而malloc不初始化,裡邊資料是随機的垃圾資料。

Allocates a block of memory for an array of num elements, each of them size bytes long, and initializes all its bits to zero.

The effective result is the allocation of an zero-initialized memory block of (num*size) bytes.

DEMO:

#define FIRST_DEMO
//#define SECOND_DEMO

#ifdef FIRST_DEMO
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
/*this demo :calloc allocate block of memory zero-initialized*/
int main(void)
{
	int i;
	int *pn=(int *)calloc(10,sizeof(int));
	for (i=0;i<10;i++)
	{
		printf("%3d",pn[i]);
	}
	printf("\n");
	free(pn);
	getch();
	return 0;
}
#elif defined SECOND_DEMO
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(void)
{
	int i,n;
	int *pData;
	printf("Amount of numbers to be entered:");
	scanf("%d",&i);
	pData=(int *)calloc(i,sizeof(int));
	if (pData == NULL)
	{
		exit(1);
	}
	for (n=0;n<i;n++)
	{
		printf("Enter number #%d:",n);
		scanf("%d",&pData[n]);
	}
	printf("You have entered: ");
	for (n=0;n<i;n++)
	{
		printf("%d ",pData[n]);
	}
	free(pData);
	getch();
	return 0;
}
#endif
           

繼續閱讀