一维
int *a;
int N;scanf("%d", &N);
a = (int *) malloc(N * sizeof(int));
....
free(a);
二维
#include
#include
int main()
{
int nrows,ncolumns;
scanf("%d,%d",nrows,ncolumns);
区别的地方
//为数组分配行数 注意指针多了个*
int **array = malloc(nrows * sizeof(*array));//注意分配的是整形指针的数量 每行元素是个整形指针
/*这里可以写成
int **array;
array=(int**)malloc(nrows*sizeof(int*));//这里int可以写成**array
*/
//对每行分配数组个数(就是二维数组的列数)
for(i = 0; i < nrows; i++)
{
/*
这里int*可以写成*array 其实array是一个指向指针的指针变量,所以要将分配的内存转化为指针类型,在一台计算机中所有的指针变量分配的内存大小相同都是计算机的位数(就是地址线的条数,指针变量存放的是地址与地址线对应可以寻址)
*/
array[i] = (int*)malloc(ncolumns * sizeof(int));
for(l=0;l<ncolumns;l++)< p="" style="word-wrap: break-word;">
{
array[i][l]=...
}
}
//付初值以及处理过程
free(array);
return 0;
}