今天做一道矩阵运算的题的时候,直接使用常量直接定义了二维数组的大小,印象里好像学过用指针new一个可以自定大小的二维数组,经过学习之后有了以下思考。
int main()
{
int M = 4, N = 3; // 自定义二维数组大小,4行3列
int **a = new int*[M] // 令指针a指向一个元素个数为M个的由指针组成的一维数组
for(int i = 0; i < M; i++){ // 使一维数组a中的每个指针都指向一个元素个数为N的数组
a[i] = new int[N]
}
for(int i = 0; i < M; i++){ //将二维数组中每个元素赋值为1
for(int j = 0; j < N; j++){
*(*(a + i) + j) = 1; // 也可以写成a[i][j]
}
}
for (int i = 0; i < M; i++) { // 先将一维数组a中的指针所指向的每个一维数组内存释放
delete[] a[i];
}
delete[] a; // 再释放一维数组a的内存
return 0;
}
其中星(星(a + i) + j)中的星(a + i)为取数组a中的第i个元素的值,这个值是一个指针,也就是二维数组中第i行的第一个元素的地址,故星(a + i) + j就是第i行第j列的元素的地址,所以星(星(a + i) + j)就是第i行第j列的值了。