|
/***********************************************************
該程序用malloc開辟單個新單元,用calloc開辟多個連續的
新單元,用realloc對已開辟的單元重新分配空間,用free釋放
不再使用的內存空間。
***********************************************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
typedef struct stu //定義struct stu類型
{
char name[20];
int num;
}Inf;
Inf *pon,*p,*q; //定義Inf類型的指針變量
int i;
pon = p = (Inf *)calloc(3,sizeof(Inf)); //開辟3個連續的Inf空間,將首地址傳給p,pon
q = (Inf *)malloc(sizeof(Inf)); //開辟單個類型為Inf的空間
q = (Inf *)realloc(q,2*sizeof(Inf)); //對q指向的空間重新分配
for(i=0;i<3;i++)
{
scanf("%s%d",pon->name,&pon->num);
pon++;
}
for(pon=p,i=0;i<3;i++)
{
printf("%s\t%d\n",pon->name,pon->num);
pon++;
}
free(p); //釋放p指向的空間
scanf("%s%d",q->name,&q->num);
printf ("%s\t%d",q->name,q->num);
free(q); //釋放q指向的空間
return 0;
}
|
|