码迷,mamicode.com
首页 > 编程语言 > 详细

c语言动态数组

时间:2020-05-31 21:38:44      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:i++   lib   index   str   用户   scan   return   csharp   dex   

动态数组根据用户的需要开创空间 避免造成空间的浪费

#include<stdio.h>
#include<stdlib.h>
typedef struct {
	int *parrary;
	int size;
}array;

array size(int intsize);
void afree(int *p);
int bigsmall(array *a);
int *at(array *a,int index);
void addtion(array *a,int add);
void main()
{
	int i;
	printf("请输入你需要开辟的空间大小(int)");
	int b;
	scanf("%d",&b);
	array a=size(b);
	printf("已经开辟了%d个字节\n",bigsmall(&a));
	printf("address:%p\n",a.parrary);
	int number=0;
	while(1)
	{
		scanf("%d",at(&a,number++));
		if(number==5)
		{
			break;
		}
	}printf("%d",*(at(&a,7)));
		
	afree(a.parrary);
}
array size(int intsize)
{
	array a;
	a.size=intsize;
	a.parrary=(int*)malloc(sizeof(int)*intsize);
	a.size=intsize;
	return a;
}
void afree(int *p)
{
	


	free(p);

}
int bigsmall(array *a)
{
	return a->size;
}

int *at(array *a,int index)
{
	if(index>a->size)
	{
		addtion(a,1);
	}
	return &(a->parrary[index]);
}
void addtion(array *a,int add)
{
	int *p=(int*)malloc((int)(a->size+add));
	int i;
	for(i=0;i<=a->size;i++)
	{
		p[i]=a->parrary[i];
	}
	free(a->parrary);
	a->parrary=p;
	a->size+=add;
	
}

  

c语言动态数组

标签:i++   lib   index   str   用户   scan   return   csharp   dex   

原文地址:https://www.cnblogs.com/qy00/p/13021446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!