C言語で、staticな配列の初期化をしたいです。
まず以下のコードを見てください。
C
1#include <stdio.h> 2#define NUM 2 3typedef enum _BOOL { FALSE = 0, TRUE } BOOL; 4 5void hoge(int num){ 6 static BOOL is_hoge[NUM] = {FALSE, FALSE}; 7 8 printf("%d\n", is_hoge[num]); 9 10 if (!is_hoge[num]){ 11 is_hoge[num] = TRUE; 12 } 13} 14 15int main(void){ 16 // Your code here! 17 int num = 0; 18 hoge(num); 19 hoge(num); 20} 21
やりたいこととしては、NUM
の値を2から変更してもis_hoge
配列の全ての要素をFALSE
で初期化できるようにしたいです。
現状は
C
1static BOOL is_hoge[NUM] = {FALSE, FALSE};
というようにFALSE
を2個書いていますが、NUM
の値が2から3に変更したとき、is_hoge[2]
は0で初期化されてしまいます。これを明示的にFALSE
で初期化したいです。
たとえば次のように変更したとき
C
1static BOOL is_hoge[NUM] = {};
is_hoge
配列の要素は全て0で初期化されますが、そうではなくFALSE
で初期化する方法が知りたいです。
もちろんFALSE
は0なので問題はないのですが、もし方法として存在するのなら知りたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー