|
/***********************************************************
该程序用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;
}
|
|