Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Cách tự triển khai hàm sizeof trong C

Để sử dụng sizeof(), ta có thể lấy giá trị thông qua một biến x, dùng &x để in địa chỉ của nó. Nếu tăng giá trị của &x thì nó sẽ tăng theo các cách khác nhau. Nếu chỉ tăng 1 byte, nghĩa là kiểu ký tự; nếu tăng 4, thì là int hoặc float, v.v. Do đó, bằng cách lấy hiệu giữa &x + 1 và &x, ta có thể xác định kích thước của x.

Ở đây ta dùng macro vì kiểu dữ liệu không được định nghĩa trong hàm. Thêm vào đó, ta ép kiểu bằng (char*) để biết bao nhiêu dữ liệu kiểu ký tự có thể đặt ở vị trí đó, vì ký tự chiếm 1 byte.

Ví dụ

#include <stdio.h>
#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)

int main(void) {
    int x = 10;
    char y = 'f';
    double z = 254748.23;
    printf("size of x: %d\n", my_sizeof(x));
    printf("size of y: %d\n", my_sizeof(y));
    printf("size of z: %d\n", my_sizeof(z));
    return 0;
}

Kết quả

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