//若定义静态数组 int test[100]; 则realloc无法为其分配内存空间,内存地址无法改变
/*如果是静态数组是任何方式都不能实现动态增长,因为他的大小是编译时确定的。但是动态申请的内存区域就可以。如下
int *test=(int*)malloc(10*sizeof(int)); */
//测试代码如下
#include <stdio.h>
#include <malloc.h>
int main()
{
int i;
//int test[10];
int *test=(int*)malloc(10*sizeof(int)); //起初分配10个空间
for(i=0;i<10;i++)
test[i]=i; //存入10个数据
for(i=0;i<20;i++)
printf("%5d",test[i]); //输出20个数据
printf("
");
int *p;
p=test;
p=(int *)realloc(p,sizeof(int)*20); //重新分配20个空间
for(i=10;i<20;i++)
test[i]=i+100; //再存入10个数据,总共20个数据
for(i=0;i<20;i++)
{
printf("%7d",test[i]);
}
return 0;
}
结果如下
结果正常
——————————————————————————————————————————————————————————————————————————
若用int test[10]静态数组定义,结果如下
结果错误