サイズ可変版
C
1#include <stdio.h>
2
3typedef int element;
4
5/* "?行ld列 の行列 body" の row行col列に val をsetする */
6void set_at(void* body, int ld, int row, int col, element val) {
7 ((element*)body)[row*ld+col] = val;
8}
9
10/* "?行ld列 の行列 body" の row行col列の値を getする */
11element get_at(void* body, int ld, int row, int col) {
12 return ((element*)body)[row * ld + col];
13}
14
15int main() {
16 element mtx[4][3];
17 /* mtx[y][x] = x+y; */
18 for ( int y = 0; y < 4; ++y ) {
19 for ( int x = 0; x < 3; ++x ) {
20 set_at(mtx, 3, y, x, x+y);
21 }
22 }
23
24 /* できたかな? */
25 for (int y = 0; y < 4; ++y) {
26 for (int x = 0; x < 3; ++x) {
27 printf("%2d ", mtx[y][x] /* get_at(mtx, 3, y, x)*/ );
28 }
29 printf("\n");
30 }
31 return 0;
32}