sizeof() を使用するには、変数 x を使用して値を取得し、&x を使用すると、そのアドレスが出力されます。ここで、&x の値を増やすと、別の方法で増加する可能性があります。 1 バイトだけ追加された場合は文字型であることを意味し、追加された値が 4 の場合は int 型または float 型であることを意味します。したがって、&x 1 と &x の差を計算することで、x のサイズを取得できます。
関数内でデータ型が定義されていないため、ここではマクロを使用します。もう 1 つ、型変換に (char*) を使用するので、その場所にどれだけの文字型データを配置できるかがわかります。文字型はデータの 1 バイトを占めるためです。
#include <stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) main(void) { int x = 10; char y = 'f'; double z = 254748.23; printf("size of x: %d</p><p>", my_sizeof(x)); printf("size of y: %d</p><p>", my_sizeof(y)); printf("size of z: %d</p><p>", my_sizeof(z)); }
size of x: 4 size of y: 1 size of z: 8
以上がC で独自の sizeof を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。