动态数组的长度可以在函数运行的过程中动态的扩充和缩小,怎么扩充和缩小?用realloc函数。realloc函数也是系统提供函数,他是英文单词realloc的缩写,即“重新分配”的分配的意思。该函数的原型:
#include<stdlib.h>
void *realloc(void *p, unsigned long size);
其中指针变量 p 是指向“要改变内存大小的动态内存的”指针变量。指针变量 p 是 void *型的,表示可以改变任何基类型的,指向动态的指针变量。第二个参数size是重新指定的“新的长度”。
“新的长度”可大可小,但是要注意,如果“新的长度”小于原内存的大小,可能会导致数据丢失,慎用!如果是扩充的话,原有数据仍然被保留着,仅仅在已有的内存基础上进行扩充。如果现在是 5 字节,扩充到 7 字节,那么原来的 5 个内存单元不动,里面的数据也不会改变,只在原来的基础上增加 2 个内存单元。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int cnt1, cnt2;
int *p;
int i;
printf("请输入你要存放的元素个数");
scanf("%d", &cnt1);
p = malloc(sizeof(int) * cn