ตัวดำเนินการ Sizeof เป็นหนึ่งในตัวดำเนินการที่ใช้มากที่สุดในภาษา C ที่ใช้ในการคำนวณขนาดของโครงสร้างข้อมูลหรือประเภทข้อมูลที่เราส่งผ่าน ตัวดำเนินการ sizeof ส่งคืนชนิดจำนวนเต็มที่ไม่ได้ลงนาม และตัวดำเนินการนี้สามารถใช้กับชนิดข้อมูลพื้นฐานและแบบผสมได้ เราสามารถใช้ตัวดำเนินการ sizeof ได้โดยตรงกับประเภทข้อมูลและรู้ว่าหน่วยความจำที่ใช้ไปนั้นเป็นอย่างไร -
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int main() { cout << sizeof(int) << "\n"; cout << sizeof(char) << "\n"; cout << sizeof(float) << "\n"; cout << sizeof(long) << "\n"; return 0; }
ผลลัพธ์
4 1 4 8 8
โดยใช้ฟังก์ชันนี้ เราสามารถทราบพื้นที่ที่ตัวแปรของชนิดข้อมูลนี้ใช้ ผลลัพธ์ยังขึ้นอยู่กับคอมไพเลอร์ด้วย เนื่องจากคอมไพเลอร์ 16_bit จะให้ค่า int ที่แตกต่างจากคอมไพเลอร์ 32_bit
เรายังใช้การดำเนินการนี้กับนิพจน์ได้อีกด้วย −
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int main() { cout << sizeof(int) << "\n"; cout << sizeof(char) << "\n"; cout << sizeof(float) << "\n"; cout << sizeof(double) << "\n"; cout << sizeof(long) << "\n"; return 0; }
ผลลัพธ์
4 4
อย่างที่คุณเห็น ค่าก่อนหน้าของ x คือสี่ และแม้หลังจากการดำเนินการนำหน้า ค่าก็ยังคงเหมือนเดิม ทั้งหมดเป็นเพราะขนาดของโอเปอเรเตอร์ เนื่องจากโอเปอเรเตอร์นี้ถูกใช้ระหว่างเวลาคอมไพล์ จึงไม่เปลี่ยนค่าของนิพจน์ที่เราใช้
ความจำเป็นของขนาดตัวดำเนินการ
มีการใช้ตัวดำเนินการ sizeof ที่หลากหลาย อย่างไรก็ตาม ส่วนใหญ่จะใช้เพื่อกำหนดขนาดชนิดข้อมูลแบบผสม เช่น อาร์เรย์ โครงสร้าง ยูเนี่ยน ฯลฯ
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; // the given array int size = sizeof(arr) / sizeof(int); // calculating the size of array cout << size << "\n"; // outputting the size of given array }
ผลลัพธ์
5
ประการแรก เราคำนวณขนาดของอาร์เรย์ทั้งหมดหรือคำนวณหน่วยความจำที่ใช้ไป จากนั้นเราหารตัวเลขนั้นด้วยขนาดของประเภทข้อมูล ในโปรแกรมนี้เป็น int.
กรณีการใช้งานที่สำคัญที่สุดอันดับสองสำหรับโอเปอเรเตอร์นี้คือการจัดสรรหน่วยความจำแบบไดนามิก ดังนั้นเราจึงใช้ตัวดำเนินการ sizeof เมื่อจัดสรรพื้นที่
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int main() { int* ptr = (int*)malloc(10 * sizeof(int)); // here we allot a memory of 40 bytes // the sizeof(int) is 4 and we are allocating 10 blocks // i.e. 40 bytes }
บทสรุป
ในบทความนี้ เรากำลังพูดถึงการใช้ตัวดำเนินการ sizeof และวิธีการทำงาน นอกจากนี้เรายังเข้ารหัสกรณีการใช้งานประเภทต่างๆ เพื่อดูผลลัพธ์และอภิปราย เรานำกรณีการใช้งานของโอเปอเรเตอร์นี้ไปใช้ในภาษา C++ เราสามารถเขียนโปรแกรมเดียวกันในภาษาอื่นๆ เช่น C, Java, Python เป็นต้น เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์