Computer >> Máy Tính >  >> Lập trình >> lập trình C

Làm thế nào sẽ triển khai kích thước của riêng bạn trong C

Để sử dụng sizeof (), chúng ta có thể lấy giá trị bằng một biến x, sử dụng &x, nó sẽ in ra địa chỉ của nó. Bây giờ nếu chúng ta tăng giá trị của &x thì nó có thể tăng theo cách khác. Nếu chỉ một byte được tăng lên, điều đó có nghĩa là nó là ký tự, nếu giá trị tăng lên là 4, thì nó là int hoặc float, v.v. Vì vậy, bằng cách lấy sự khác biệt giữa &x + 1 và &x, chúng ta có thể nhận được kích thước của x.

Ở đây chúng ta sẽ sử dụng macro vì kiểu dữ liệu không được xác định trong hàm. Và một điều nữa, chúng tôi đang truyền bằng cách sử dụng (char *), vì vậy, nó sẽ cho chúng tôi biết rằng có bao nhiêu dữ liệu kiểu ký tự có thể được đặt ở nơi đó. Vì ký tự này chiếm một byte dữ liệu.

Ví dụ

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

Đầu ra

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