1
    int a[] = {1,2,3,4};
    printf("%d",sizeof(a)/sizeof(a+1));

出力: 4

誰でもこれを説明できますか?

4

1 に答える 1

10

それは間違っています。 sizeof(a)は配列sizeof(a+1)のサイズであり、ポインターのサイズです。2つに分けても意味がありません。

著者がおそらく意図したことは次のとおりです。

sizeof a / sizeof a[0]

これにより、配列内の要素の数が得られます。 sizeof a[0]のサイズですint

あなたのコードがあなたに正しい答えを与える理由は、あなたのマシンがたまたま持っているからsizeof(int) == sizeof(int *)です。

余談:%zuを印刷するために使用しますsize_t

于 2013-07-10T18:33:00.997 に答える