可変長配列
へぇ。実装まだー?
『プログラミング言語 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
できるっぽい?