如何在 C 中實現你自己的 sizeof


要使用 sizeof(),我們可以使用變數 x 獲取值,使用 & 表示 x 將列印其地址。現在,如果我們增加 & 表示 x 的值,則它可能會以不同的方式增加。如果只增加一個位元組,則表示它是一個字元,如果增加的值為 4,則它是 int 或 float,依此類推。因此,透過獲取 & 表示 x + 1 和 & 表示 x 之間的差異,我們可以獲取 x 的大小。

由於該功能中未定義該資料型別,因此我們將在此處使用宏。再有一點,使用 (char*) 進行轉換,將告訴我們有多少字元型別資料可以放置在該位置。因為字元需要一個位元組的資料。

示例

#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
", my_sizeof(x));    printf("size of y: %d
", my_sizeof(y));    printf("size of z: %d
", my_sizeof(z)); }

輸出

size of x: 4
size of y: 1
size of z: 8

更新於: 30-Jul-2019

2k+ 瀏覽

開啟你的 職業生涯

完成課程後即可獲得認證

開始
廣告