动态分配结构体内存(malloc)

设计一个简单的结构体模板 ,用于汽车销售系统的搜索界面数据库。动态分配一定的内存空间,存储已有的各种类型的汽车信息。

提示:不能使用指针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);                    //释放动态分配内存区域 
} 
发布了180 篇原创文章 · 获赞 169 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/huangziguang/article/details/105326575
今日推荐