C 語言的二維陣列處理
· 1 分鐘閱讀
用結構體將行數、列數與儲存數值的記憶體整合在一起,會更方便操作。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
float *data;
int col_size;
int row_size;
} Mat;
void MatInit(Mat *mat, int row_size, int col_size) {
mat->row_size = row_size;
mat->col_size = col_size;
mat->data = (float *)calloc(row_size * col_size, sizeof(float));
}
float *MatAt(Mat *mat, int i, int j) {
return mat->data + i * mat->col_size + j;
}
void MatFree(Mat *mat) { free(mat->data); }
int main(void) {
Mat mat;
MatInit(&mat, 30, 5); // 初始化 30 行 5 列的矩陣
*MatAt(&mat, 0, 0) = 50; // 將第 0 行第 0 列設為 50
printf("%f\n", *MatAt(&mat, 0, 0)); // 顯示第 0 行第 0 列的數值
MatFree(&mat);
return 0;
}
読み込み中...