二维动态数组和静态数组的存储方式如下:
二维动态数组代码实现如下:
#include <stdio.h> #define DEBUG int matrixMultiplication(int n, int **A, int **B, int s, int t){ int result = 0; for (int i = 0; i < n; i++){ result += A[s][i] * B[i][t]; #ifdef DEBUG printf("result:%d, A[s][i]:%d, b[i][t]:%d\n", result, A[s][i], B[i][t]); #endif } return result; } int main(){ int n = 5; int **A = new int*[n]; int k = 0; int **B = new int*[n]; for (int i = 0; i < n; i++){ A[i] = new int[n]; B[i] = new int[n]; } for (int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ B[i][j] = -k; A[i][j] = k++; } } #ifdef DEBUG printf("A:\n"); for (int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ printf("%d ", A[i][j]); } printf("\n"); } printf("B:\n"); for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ printf("%d ", B[i][j]); } printf("\n"); } #endif for (int i = 0; i < n; i++){ delete[] A[i]; delete[] B[i]; } delete[] A; delete[] B; int result = matrixMultiplication(n, A, B, 2, 3); printf("%d\n", result); }