动态分配内存
2008-03-28 11:46
453 查看
#define Malloc(count,type) (type *)malloc(sizeof(type)*(count))
typedef struct A{
int *a;
int size;
int count;
}Arr;
void Init(Arr *arr)//初始话
{
arr->count=-1;
scanf("%d",&arr->size);
assert(arr->size>0);
arr->a=Malloc(arr->size,int);
if(arr->a==NULL)
{
printf("malloc error!");
}
printf("malloc ok!");
}
void Add(Arr *arr,const int &data)//添加
{
if(arr->count+1>=arr->size)//内存不足
{
int RealSize=arr->size*(sizeof(int))+2*(sizeof(int));
realloc(arr->a,RealSize);
arr->size+=2;
}
arr->count++;
arr->a[arr->count]=data;
}
void Print(Arr arr)
{
for(int i=0;i<=arr.count;i++)
{
printf("%d-",arr.a[i]);
}
}
void Destory(Arr arr)
{
if(arr.a!=NULL)
free(arr.a);
}
int main(array<System::String ^> ^args)
{
Arr arr;
Init(&arr);
printf("Add");
Add(&arr,4);
Add(&arr,5);
Add(&arr,1);
Add(&arr,3);
Add(&arr,8);
printf("Print");
Print(arr);
Destory(arr);
getchar();
getchar();
return 1;
}
typedef struct A{
int *a;
int size;
int count;
}Arr;
void Init(Arr *arr)//初始话
{
arr->count=-1;
scanf("%d",&arr->size);
assert(arr->size>0);
arr->a=Malloc(arr->size,int);
if(arr->a==NULL)
{
printf("malloc error!");
}
printf("malloc ok!");
}
void Add(Arr *arr,const int &data)//添加
{
if(arr->count+1>=arr->size)//内存不足
{
int RealSize=arr->size*(sizeof(int))+2*(sizeof(int));
realloc(arr->a,RealSize);
arr->size+=2;
}
arr->count++;
arr->a[arr->count]=data;
}
void Print(Arr arr)
{
for(int i=0;i<=arr.count;i++)
{
printf("%d-",arr.a[i]);
}
}
void Destory(Arr arr)
{
if(arr.a!=NULL)
free(arr.a);
}
int main(array<System::String ^> ^args)
{
Arr arr;
Init(&arr);
printf("Add");
Add(&arr,4);
Add(&arr,5);
Add(&arr,1);
Add(&arr,3);
Add(&arr,8);
printf("Print");
Print(arr);
Destory(arr);
getchar();
getchar();
return 1;
}
相关文章推荐
- 互联网进化断代史第二纪-盘古纪
- 互联网进化断代史创世纪---混沌纪
- switch语句使用时注意事项
- switch语句使用时注意事项
- 拥有了自己的博客
- vivi 1 移植
- J2EE-PL/SQL工具连接Oracle数据库的方法
- muliti tier application
- 面试常用代码
- SSO(单点登录)
- Jquery Plugins
- 03.29病毒预警:“循环瘫痪下载器”关闭杀毒软件和防火墙
- C++Builder 2007 vs 2006 代码细节比较
- SQL Server 2005 18452登录错误的解决方法
- oracle 学习基础
- Error: URL Is In the Internet Zone
- 北京市社会保险及实发工资计算
- linux下USB驱动及其相关研究(三) --驱动模块的编写
- How To: Use Impersonation and Delegation in ASP.NET 2.0-from MS
- Web Application 连接池配置