【C言語】initializer element is not constant

“initializer element is not constant” というエラーメッセージは、配列の初期化子に定数以外の値が指定されている場合に発生するものです。C 言語では、配列の初期化子には定数のみが指定できます。

例えば、以下のようなプログラムでこのエラーが発生する可能性があります。

#include <stdio.h>

int main() {
  int num = 10;
  int arr[] = {1, 2, 3, num}; // エラー: initializer element is not constant
  printf("%d\n", arr[3]);
  return 0;
}

上記のプログラムでは、num という整数型(int)の変数を宣言しています。そして、arr という配列を定義しています。この配列は、値が 1, 2, 3 の要素を持ち、さらに num の値を持つ要素も持つものです。

しかし、上記のプログラムでは、配列の初期化子に、定数以外の値が指定されています。そのため、プログラムが実行されると、エラーが発生します。

このような場合、配列の初期化子に指定する値を定数に置き換えることで、プログラムが正しく動作するようになります。例えば、以下のように修正することができます。

#include <stdio.h>

int main() {
  int num = 10;
  int arr[] = {1, 2, 3, 10}; // 正しく動作する
  printf("%d\n", arr[3]);
  return 0;
}

コメント

タイトルとURLをコピーしました