c语言动态数组c2143错误,关于数组章节,使用C语言realloc实现动态数组的报错,请老师解惑...

想实现在输入时就进行扩容,最终结果显示正确,但是瞬间崩溃,只能觉的是指针出了问题,但是无法查出,还请老师解惑。

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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值