31

私は次のようなchar*配列を持っています:

char *tbl[] = { "1", "2", "3" };

sizeof演算子を使用して配列の要素数(ここでは3)を取得するにはどうすればよいですか?

以下はうまくいきましたが、それは正しいですか?

int n = sizeof(tbl) / sizeof(tbl[0]) 
4

3 に答える 3

40

はい、

size_t n = sizeof(tbl) / sizeof(tbl[0])

これを行う最も一般的な方法です。

int配列サイズに使用するのは最善の方法ではないことに注意してください。

于 2009-10-13T12:34:46.607 に答える
19

短く、間違いなく、よりクリーンなバージョンは次のようになります。

sizeof tbl / sizeof *tbl

:)

于 2009-10-13T16:46:22.400 に答える
4

はい、配列tb1の要素数がわかります。

int n = sizeof(tbl) / sizeof(tbl[0])

解釈:

sizeof(tb1)は、配列全体のサイズを示します。つまり、tb1= 3バイトです。

sizeof(tb1 [0])は、文字のサイズを示します。tb1[0]は、文字値(アドレスtb1 + 0の値)= 1バイトを示します。

これら2つを分割すると3つの要素が得られます

于 2013-08-07T14:18:12.803 に答える