Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

วิธีการสร้าง sizeof ของคุณเองในภาษา C

ในการใช้งาน sizeof() เราสามารถดึงค่าได้โดยใช้ตัวแปร x และใช้ &x เพื่อพิมพ์ที่อยู่ของมัน หากเราเพิ่มค่าของ &x ค่าจะเพิ่มขึ้นในรูปแบบที่ต่างกันไป หากเพิ่มขึ้นเพียง 1 ไบต์ แสดงว่าเป็นตัวอักขระ (char) หากเพิ่มขึ้น 4 ไบต์ แสดงว่าเป็น int หรือ float และอื่นๆ ดังนั้นจากการหาความต่างระหว่าง &x + 1 และ &x เราจะได้ขนาดของ x

ที่นี่เราจะใช้ macro เนื่องจากชนิดข้อมูลไม่ได้ถูกกำหนดในฟังก์ชัน และอีกอย่างหนึ่งเรากำลังแปลงชนิดข้อมูลโดยใช้ (char*) ดังนั้นมันจะบอกเราว่าสามารถวางข้อมูลชนิดตัวอักขระได้กี่ตัวในตำแหน่งนั้น เนื่องจากตัวอักขระใช้พื้นที่ 1 ไบต์

ตัวอย่าง

#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));
}

ผลลัพธ์

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