变长数组:c99,运行时给定一个n
int n;
scanf("%d",&n);
一维:int a[n];
多维:int a[m][n]
一维动态数组:内存分配函数:头文件<stdlib.h>
int * a;
- a=(int *)malloc(n*sizeof(int))分配不初始化
- a=(int *)calloc(n,sizeof(int))分配并清零
if(a==NULL){
...
}
之后可使用a[i]
不需要时,应释放
free(a);
二维动态数组:内存分配函数:头文件<stdlib.h>
int **a;//假设分配a[m][n]
分配第一维度
a=(int **)malloc(m*sizeof(int*));
分配第二维度
for(int i=0;i<m;++i){
a[i]=(int*)malloc(n*sizeof(int));
}
使用
for(int i=0;i<m;++i){
for(int j=0;j<n;++j0{
a[i][j]...
}
}
释放第二维度
for(int i=0;i<m;++i){
free(a[i]);
}
释放第一维度
free(a);