通过typedef可以简单实现。也可以直接写。
写了两个简单的矩阵操作的函数简单示例。
#include
#include
const int ROW = 3;
const int COL = 4;
typedef int (* mat_pointer)[COL];
mat_pointer init_mat(mat_pointer a)
{
for (int i = 0; i < ROW; ++i)
for (int j = 0; j < COL; ++j)
a[i][j] = i + j;
return a;
}
void print_mat(mat_pointer a)
{
for (int i = 0; i < ROW; ++i)
for (int j = 0; j < COL; ++j)
printf("A[%d][%d]=%d%c", i, j, a[i][j], j == COL - 1 ? ‘\n‘ : ‘\t‘);
printf("\n");
}
int (*build_mat(void))[COL]
{
int (* arr_pointer)[COL] = (int (*)[COL]) malloc(ROW * COL * sizeof (int));
for (int i = 0; i < ROW; ++i) {
for (int j = 0; j < COL; ++j)
arr_pointer[i][j] = i * 10 + j;
}
return arr_pointer;
}
int main(void)
{
int arr[ROW][COL];
mat_pointer arr2 = init_mat(arr);
print_mat(arr2);
int (*arr3)[COL] = build_mat();
print_mat(arr3);
return 0;
}
原文:http://www.cnblogs.com/wenruo/p/4801727.html