设计一个简单的结构体模板 ,用于汽车销售系统的搜索界面数据库。动态分配一定的内存空间,存储已有的各种类型的汽车信息。
提示:不能使用指针pcarinfo将已分配的内存区域释放,因为此时由于for循环内pcarinfo做自增运算,其所指位置已不再是动态分配内存的首地址了,因此必须使用pcarinfo释放动态分配的内存。
#include<stdio.h>
#include<stdlib.h>
struct carinfo
{
float displacement;
float price;
float type[20];
char carname[30];
char rc[30];
};
int main()
{
unsigned int i,j=0;
struct carinfo *pcarinfo,*pcarinfocopy;
i=sizeof(struct carinfo);
printf("结构体carinfo占的字节数为:%u\n",i);
pcarinfo=(struct carinfo*)malloc(i*100);//分配100个carinfo结构体类型内存区域
pcarinfocopy=pcarinfo; //记录内存区域首地址
printf("开始输入汽车信息:\n");
for(j=0;j<50;j++)
{
printf("No.%u车名:",j+1);
scanf("%s",pcarinfo->carname);
printf("No.%u车型:",j+1);
scanf("%s",pcarinfo->type);
printf("No.%u车牌号:",j+1);
scanf("%s",pcarinfo->rc);
printf("No.%u价位:",j+1);
scanf("%s",pcarinfo->price);
printf("No.%u排量:",j+1);
scanf("%s",pcarinfo->displacement);
parinfo++;
}
printf("output all car's info\n");
pcarinfo=pcarinfocopy;
for(j=0;j<10;j++)
{
printf("No.%u car's车名:%s",j+1,pcarinfo->carname);
printf("No.%u car's车型:%s",j+1,pcarinfo->type);
printf("No.%u car's车牌号:%s",j+1,pcarinfo->rc);
printf("No.%u car's价位:%s",j+1,pcarinfo->price);
printf("No.%u car's排量:%s",j+1,pcarinfo->displacement);
parinfo++;
}
free(pcarinfocopy); //释放动态分配内存区域
}