1、复习C语言中的内存分配函数:malloc、realloc、calloc、free,编写程序完成以下功能:
(1)用malloc或calloc函数分配一个能存储10个整型数的存储空间;
提示:p=(int*)malloc(10*sizeof(int));
(2)通过scanf函数向(1)中分配的存储空间输入10个整数;
(3)再通过realloc函数将先前分配的空间扩容为可存储20整型数的大小;
提示:p=(int*)realloc(p,20* sizeof(int));
(4)向扩容后的空间中再输入另外的10个整数;
(5)用printf函数输入所有的整数;
(6)最后用free函数释放存储空间。
请思考并回答:初次分配的存储空间的地址和重新分配的存储空间的地址一样吗?证明你的结论?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p,i;
p=( int* )malloc(10 * sizeof(int)); //内存分配
printf("输入十个整数:");
for(i=0;i<10;i++)
scanf("%d",p+i);
p=(int*)realloc(p,20* sizeof(int)); //空间扩容
printf("\n输入另外十个数:");
for(i=10;i<20;i++)
scanf("%d",p+i);
printf("\n输出所有整数:");
for(i=0;i<20;i++)
printf("%d\t",*(p+i));
printf("\n");
free(p);
return 0;
}