變長數組: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);