C/C++における配列長の決定タイミング

Cでは、C99以降、実行時(run time)に配列の長さを決定できるようになりましたが、C++ではコンパイル時(compile time)に配列の長さを決定する必要があります。


1.Cの場合

array.c

#include <stdio.h>

int main(void) {
  int length = 10;
  double array[length];
  for (int i = 0; i < length; i++) {
    array[i] = 0;
    printf("%f\n", array[i]);
  }
  return 0;
}

clang0.bat(ファイル名をclang.batにすると暴走します)

set PATH=D:\LLVM\bin;D:\MinGW\bin
clang -std=c11 -O2 -Wall *.c -o main.exe


2.C++の場合

array.cpp

#include <cstdio>

int main() {
  const int length = 10;
  double array[length];
  for (int i = 0; i < length; i++) {
    array[i] = 0;
    printf("%f\n", array[i]);
  }
  return 0;
}

clang++0.bat(ファイル名をclang++.batにすると暴走します)

set PATH=D:\LLVM\bin;D:\MinGW\bin
clang++ -std=c++11 -O2 -Wall *.cpp -o main.exe


参考サイト

1.プログラミング言語Cの新機能 可変長配列
2.C言語(C99)の variable length array というものを初体験

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中