なぜか次の単純なプログラムにエラーがでます。

#include <stdio.h>

int main(void)
{
int i = 10;
int k;
int m[i] = {1,2,3};

for(k = 0;k < i;k++)
printf("%d\n",m[k]);
return(0);
}

配列mの初期化を”m[i] → m[10]”にするとうまくいきました。
配列の要素の初期化に変数はつかえないのですか?