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; }
![]()