[英]How do I store a matrix in an array in C?
所以我想在一個數組中存儲幾個矩陣。 我知道你可以制作一個三維數組。 我想要做的是能夠將我從 AndMatrix 方法獲得的矩陣存儲在一個數組中,然后在需要時使用它們。 我的代碼如下。 arrayOfMatrices 變量是我已經初始化的 3 維數組。 有人可以解釋一下我將如何訪問數組中的這些矩陣。 我的代碼如下:
int** AndMatrix(int **original,int **matA, int **matB, int row, int column){
int** result=calloc(row, sizeof(int*));
for (int i = 0; i < row; i++) {
result[i] = calloc(column, sizeof(int)); }
return result;}
char temps[10][rows][columns];
arrayOfMatrices[countForMatrices] = AndMatrix(matrix,matrix1, matrix2, rows,columns);
聲明一個雙指針數組:
int **arrayOfMatrices[total_matrices];
或者
int ***arrayOfMatrices = malloc(100 * sizeof(int**));
要訪問存儲在數組中的矩陣,您的操作方式與訪問一1D
數組中的給定元素的方式相同,即:
arrayOfMatrices[0]
要訪問存儲在 position 零的數組的矩陣, arrayOfMatrices[1]
的附件從 position 的矩陣一,依此類推。
一個運行的例子:
#include <stdio.h>
#include <stdlib.h>
int** AndMatrix(int row, int column){
int** result = calloc(row, sizeof(int*));
for (int i = 0; i < row; i++)
result[i] = calloc(column, sizeof(int));
return result;
}
int main() {
int ***arrayOfMatrices = malloc(sizeof(int**) * 100);
int row_matrix1 = 10;
int col_matrix1 = 10;
arrayOfMatrices[0] = AndMatrix(row_matrix1, col_matrix1);
int **first_matrix = arrayOfMatrices[0];
// Fill up the matrix with some values
for(int i = 0; i < row_matrix1; i++)
for(int j = 0; j < col_matrix1; j++)
first_matrix[i][j] = i * j;
for(int i = 0; i < row_matrix1; i++){
for(int j = 0; j < col_matrix1; j++)
printf("%d ", first_matrix[i][j]);
printf("\n");
}
// free the memory accordingly.
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.