ハブ君の寝言

日記のような何か

可変長配列

へぇ。実装まだー?
プログラミング言語 C の新機能』
4. 配列
http://seclan.dll.jp/c99d/c99d04.htm

試してみた。

#include<stdio.h>
#define N 10
#define M 10
void foo(int n, int m){
        int i,j,a[n][m];
        for(i=0;i<n;i++){
                for(j=0;j<m;j++){
                        a[i][j] = i*j;
                }
        }
        for(i=0;i<n;i++){
                for(j=0;j<m;j++){
                        printf("%d ",a[i][j]);
                }
                printf("\n");
        }
}

int main(void){
        int i,j;
        for(i=1;i<N;i++){
                for(j=1;j<M;j++){
                        printf("n=%d,m=%d\n",i,j);
                        foo(i,j);
                        printf("\n");
                }
        }
}

実行結果

n=1,m=1
0

n=1,m=2
0 0

n=1,m=3
0 0 0

n=1,m=4
0 0 0 0

n=1,m=5
0 0 0 0 0

n=1,m=6
0 0 0 0 0 0

n=1,m=7
0 0 0 0 0 0 0

n=1,m=8
0 0 0 0 0 0 0 0

n=1,m=9
0 0 0 0 0 0 0 0 0

n=2,m=1
0
0

n=2,m=2
0 0
0 1

n=2,m=3
0 0 0
0 1 2
...
n=9,m=7
0 0 0 0 0 0 0
0 1 2 3 4 5 6
0 2 4 6 8 10 12
0 3 6 9 12 15 18
0 4 8 12 16 20 24
0 5 10 15 20 25 30
0 6 12 18 24 30 36
0 7 14 21 28 35 42
0 8 16 24 32 40 48

n=9,m=8
0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7
0 2 4 6 8 10 12 14
0 3 6 9 12 15 18 21
0 4 8 12 16 20 24 28
0 5 10 15 20 25 30 35
0 6 12 18 24 30 36 42
0 7 14 21 28 35 42 49
0 8 16 24 32 40 48 56

n=9,m=9
0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8
0 2 4 6 8 10 12 14 16
0 3 6 9 12 15 18 21 24
0 4 8 12 16 20 24 28 32
0 5 10 15 20 25 30 35 40
0 6 12 18 24 30 36 42 48
0 7 14 21 28 35 42 49 56
0 8 16 24 32 40 48 56 64

できるっぽい?