realloc(p,24) 意思是将原有内存空间改为24个字节,如原来 p = (int *)malloc(sizeof(int)*5) 的内存空间为20个字节,为p[5],这里将增加了4个字节,数组长度相应的增加这p[6];组修改内存空间大小时,原先保留的数据不受影响。修改后的空间若大于原先长度则可以存储更多的数据,小于原有长度刚丢失后面的数组,如 realloc(p,16),数组长度降为p[4],后面丢失一个数据 。# include <stdio.h>
# include <malloc.h>
void main(void)
{
int len,i, *p;
printf("输入要存放元素的个数:");
scanf("%d", &len); //输入长度构造动态一维数组
p = (int *)malloc(sizeof(int)*5);
for(i=0; i<len; ++i)
scanf("%d",(p+i)); // p+i等同于&p[i];
// 将动态一维数组p的长度增加至6,并将第6个元素赋值为100;
realloc(p,sizeof(int)*6);//realloc重新增加或减少一维数组的长度;
p[5] = 99;
printf("输出内容:\n");
for(i=0; i<=len; ++i)
printf("%-5d", p[i]); //p[i]等同于*(p+i);
printf("\n");
}
/*执行结果如下:
--------------------------
输入要存放元素的个数:5
11 22 33 55 66
输出内容:
11 22 33 55 66 99
--------------------------
*/
动态内存分配举例_动态一维数组的构造
最新推荐文章于 2022-04-23 00:26:56 发布