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

sizeof และ alignof ต่างกันอย่างไร


ที่นี่เราจะดูว่าความแตกต่างของ sizeof และตัวดำเนินการจัดตำแหน่งใน C ++ คืออะไร ตัวดำเนินการ alognof() ถูกนำมาใช้ใน C++11

ตัวดำเนินการ alignof() ใช้สำหรับจัดตำแหน่งเป็นไบต์ ต้องใช้อินสแตนซ์ของประเภท ประเภทเป็นประเภทที่สมบูรณ์หรือประเภทอ้างอิง มีตัวดำเนินการอื่นที่เรียกว่าตัวดำเนินการ sizeof() ซึ่งจะคืนค่าขนาดของประเภทหนึ่ง สำหรับประเภทข้อมูลปกติ sizeof และ alignof จะส่งกลับค่าเดียวกัน สำหรับประเภทข้อมูลที่กำหนดโดยผู้ใช้บางประเภท alignof จะส่งคืนค่าที่แตกต่างกัน เรามาดูตัวอย่างเพื่อทำความเข้าใจกัน

ตัวอย่าง

#include<iostream>
using namespace std;
struct MyStruct{
   int x;
   double y;
   char z;
};
main() {
   cout << "The sizeof(MyStruct): " << sizeof(MyStruct) << endl;
   cout << "The alignof(MyStruct): " << alignof(MyStruct) << endl;
}

ผลลัพธ์

The sizeof(MyStruct): 24
The alignof(MyStruct): 8