web-dev-qa-db-ja.com

C sizeof char *配列

char*配列は次のとおりです。

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

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

以下は機能しましたが、正しいですか?

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

はい、

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

これが最も一般的な方法です。

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

35
sharptooth

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

sizeof tbl / sizeof *tbl

:)

14
AnT

はい、配列tb1の要素の数を示します。

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

解釈:

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

sizeof(tb1 [0])は、tb1 [0]が文字値(アドレスtb1 + 0の値)= 1バイトを与えるので、文字のサイズを与えます

これら2つの分割により、要素が得られます。

2
Mahesh