2012-02-09 11 views

答えて

2

定義して配列を初期化する正しい方法は

char Lookup[][3] = {"00", "01", "02", "03", "04", "05", "06", "07", "08"}; 

Lookup自体がある配列の各要素である:以下の構成は コンパイラは「期待式」エラーを与え、機能しません。 3バイトの別の配列ゼロターミネータで数えれば、文字列2文字分のスペースが十分です。

配列内の要素の数は、例えば、intの配列を定義する

int k; 
for (k = 0; k < sizeof Lookup/sizeof *Lookup; k++) { 
    printf("element at index %d: %s\n", k, Lookup[k]); 
} 
+0

ゼロターミネータを取り除く方法はありますか? –

+0

(本当に高速なアルゴリズムのルックアップテーブルを作成する必要があります。ゼロターミネータでは、それはより複雑で遅くなります) –

+1

2バイトでもっとも内側の配列を定義すると、結果の要素はもはや文字列ではありませんが、 。文字列ではないので、私は平易な 'char'ではなく' unsigned char'(または 'signed char')を使うことでやや明確にしたいと思います:' unsigned char Lookup [] [2] = {"00"、 "01"、 "02"、 "03"、 "04"、 "05"、 "06"、 "07"、 "08"}; **要素はもはや文字列ではありません**。 'printf'の中の' '%s" 'の使用はエラーです(' 'の多くの関数の使用と同じです)。 – pmg

2

のように、発現sizeof Lookup/sizeof *Lookupで利用可能である:

int int_array[10]; 

を定義し、配列を初期化int

int int_array[] = { 1, 2, 3, 4, 5 }; 

配列を初期化する場合、要素数の指定はオプションです。

関連する問題