seclan のほえほえルーム

| |

・プログラミング言語 C の新機能 Part XX: ARR#0:可変長配列: 宣言可能個所 (1999/09/20 [])
 可変長配列はどこでも使えるわけではありません。可変長配列が使えるのは、ブロックの中か関数引数/プロトタイプの中だけで、グローバル変数として宣言したり、struct や union の中のメンバとして宣言したりすることはできません。加えて、static や extern 付きの配列は、可変長配列にできません。


int x, y;
int newbuf[x][y];           //ERROR! グローバル変数

int sum(int w, int h, int dat[w][h]) //OK 関数引数
{
 static int sum_w[w];        //ERROR! static 付きの変数
 int sum_h[h];            //OK 通常変数
 struct sumdata {
  int sum_wh[w][h];         //ERROR! struct の中では宣言できない
 } sdat;
 static int (*p_sum_h)[h] = sum_h;  //OK static を使っているけどこれは OK
 ...
}

 

by seclan


| |

 

配信

4.19 msec