静态一维数组,在编译时就被分配了空间,使用起来很是方便。数组
然而,当事先不知道有多少数据时,数组的大小难以肯定,若是采用大的数组,会形成空间的浪费。操作系统
所以,动态一维数组的需求很强烈。3d
如今的编译器基本都支持动态一维数组。指针
#include<stdio.h> #include<stdlib.h> int main() { int i; int*pn=(int*)malloc(5*sizeof(int)); printf("malloc: %p\n",pn); for(i=0;i<5;i++) pn[i]=i; pn=(int*)realloc(pn,10*sizeof(int)); printf("realloc: %p\n",pn); for(i=5;i<10;i++) pn[i]=i; for(i=0;i<10;i++) printf("%3d",pn[i]); free(pn); return 0; }
解析:code
malloc:向操做系统申请空间blog
realloc:调整空间的大小,其中的数据保持不变。内存
pn的内存映像以下图所示:编译器
其中pn是指针变量名称,对应一块内存,存储连续10个整数的空间。io
这10个整数空间不像静态数组,它是没有名字的。 编译