一、程序C语言代码展示如下:
/************************************************
运行平台:vc++6.0
实现功能:体现realloc函数的作用
************************************************/
#include<stdio.h>
#include<stdlib.h>
#define NUM1 5
#define NUM2 10
int main()
{
int i = 0;
int *point = (int *)malloc(NUM1*sizeof(int));
printf("malloc指针point的值为:%p\n", point);
printf("为point[%d]~point[%d]赋值:\n", 0, NUM1-1);
for(i=0; i<NUM1; i++)
{
scanf("%d", &point[i]);
}
printf("point[%d]~point[%d]的值为:\n", 0, NUM1-1);
for(i=0; i<NUM1; i++)
{
printf("%2d", point[i]);
}
printf("\n\n");
point=(int *)realloc(point, NUM2*sizeof(int));
printf("realloc指针point的值为:%p\n", point);
printf("为point[%d]~point[%d]赋值:\n", NUM1, NUM2-1);
for(i=NUM1; i<NUM2; i++)
{
scanf("%d", &point[i]);
}
printf("point[%d]~point[%d]的值为:\n", 0, NUM2-1);
for(i=0; i<NUM2; i++)
{
printf("%2d", point[i]);
}
printf("\n");
free(point);
return 0;
}
二、程序运行结果如下:
三、程序设计过程解析如下:
1.先使用malloc分配NUM1个int型大小的空间,地址返回给指针point
2.将其地址打印出来为:003206D0
3.从分配内存空间的0到(NUM1-1)给每个int型空间赋值为:0 1 2 3 4
4.从空间0开始,打印出来为:0 1 2 3 4
5.再使用realloc从point地址分配NUM2个int型大小空间,地址返回给指针point
6.将其地址打印出来同样为:003206D0
7.从NUM1到(NUM2 - 1)给每个int型空间赋值为:5 6 7 8 9
8.从0空间开始,打印出来为:0 1 2 3 4 5 6 7 8 9
四、程序设计目的说明如下:
当使用动态分配的内存空间不够用时,可以再扩充空间,以满足需求!
如此,解决了使用自动(临时)数组会导致当初始分配空间不够用时无法扩充的缺陷。
五、realloc总结如下:
最后觉得百度百科关于realloc的使用总结讲述不错,故摘抄如下:
链接:http://baike.baidu.com/link?url=haVQHE5N1GjdTR92Vh8V4SDO1KClfpbMIpT_N7rZr9gJ9e4P9RGX_10QB5KfIvwu
realloc使用总结: