想实现在输入时就进行扩容,最终结果显示正确,但是瞬间崩溃,只能觉的是指针出了问题,但是无法查出,还请老师解惑。
int* CreatArr(int tmpcapacity); // 构造函数,传入数组的容量capacity构造Array
int SetArr(int *array,int num); // 设置数组中的值
int ShowArr(int *array); // 显示数组中的元素
int GetCapacity(int *array); // 获取数组的容量
int ExpendCapacity (int *array,unsigned int newcapacity); // 将数组空间的容量变成newCapacity大小
int capacity;
int esize;int main()
{
int *array;
int num; //初始化数组中元素个数
int sts = 1;
array = CreatArr(8);
num = 10;
SetArr(array,num);
ShowArr(array);
sts = GetCapacity(array);
printf("sts = %d\n",sts);
return 0;
}
int* CreatArr(int tmpcapacity)
{
if(capacity
{
capacity = 10;
}
else capacity = tmpcapacity;
int *array = (int*)malloc(sizeof(int) * capacity) ;
esize = 0;
return array;
}
int SetArr(int *array,int num)
{
int i;
if(num
{
printf("The num is err");
return -1;
}
if (num >= capacity) //感觉这里还能优化,但是不知道怎么做
{
while (num >= capacity)
{
capacity *= 2;
}
ExpendCapacity(array,(unsigned int)capacity);
}
for(i = 0 ;i
{
printf("array[%d] = ",i);
scanf("%d",array++);
esize++;
}
return 0;
}
int ShowArr(int *array)
{
int i;
for (i = 0; i
{
printf("array[%d] = %d\n",i,array[i]);
}
printf("\n\n");
return 0;
}
int GetCapacity (int *array)
{
return capacity;
}
int ExpendCapacity (int *array,unsigned int newcapacity)
{
realloc((void *)array,newcapacity);
}