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

ผลลัพธ์ของ sizeof Operator ใน C++

sizeof operator เป็นออปเปอเรเตอร์ที่ใช้มากที่สุดในภาษา C ใช้สำหรับคำนวณขนาดของโครงสร้างข้อมูลหรือชนิดข้อมูลที่ส่งผ่านเข้าไป sizeof คืนค่าเป็น unsigned integer และสามารถนำไปใช้กับ primitive และ compound data types ได้ เราสามารถใช้ 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

เรายังสามารถนำไปใช้กับนิพจน์ (expression) ได้อีกด้วย

ตัวอย่างกับนิพจน์

#include <bits/stdc++.h>
using namespace std;

int main() {
    int x = 4;
    cout << sizeof(x++) << "\n";
    cout << x << "\n";
    return 0;
}

ผลลัพธ์

4
4

เห็นได้ว่า ค่าของ x ก่อนหน้าคือ 4 และแม้หลัง operation แบบ prefix ก็ยังคงเป็น 4 เพราะ sizeof operator ทำงานในขณะ compile-time จึงไม่เปลี่ยนค่าของนิพจน์ที่นำไปใช้

ความจำเป็นของ sizeof Operator

มีการใช้ sizeof หลายอย่าง แต่หลักๆ ใช้เพื่อหาขนาดของ compound data types เช่น array, structure, union ฯลฯ

ตัวอย่างกับ Array

#include <bits/stdc++.h>
using namespace std;

int main() {
    int arr[] = {1, 2, 3, 4, 5}; // อาร์เรย์ที่กำหนด
    int size = sizeof(arr) / sizeof(int); // คำนวณขนาดอาร์เรย์
    cout << size << "\n"; // แสดงขนาดอาร์เรย์
}

ผลลัพธ์

5

ที่นี่ เราคำนวณขนาดทั้งอาร์เรย์ (หน่วยความจำที่ใช้) แล้วหารด้วย sizeof ของชนิดข้อมูล (ในที่นี้คือ int)

การใช้งานสำคัญอีกอย่างคือการจัดสรรหน่วยความจำแบบไดนามิก (Dynamic Memory Allocation) เราใช้ sizeof เมื่อจองพื้นที่

ตัวอย่างการจองหน่วยความจำไดนามิก

#include <bits/stdc++.h>
using namespace std;

int main() {
    int* ptr = (int*)malloc(10 * sizeof(int)); // จองหน่วยความจำ 40 bytes
    // sizeof(int) คือ 4 และเราจอง 10 บล็อก คือ 40 bytes
}

สรุป

ในบทความนี้ เราอภิบายการใช้ sizeof operator และการทำงานของมัน เราเขียนโค้ดตัวอย่างกรณีต่างๆ เพื่อดูผลลัพธ์และอภิบาย เราใช้ C++ สำหรับการทดลอง สามารถเขียนในภาษาอื่นได้เช่น C, Java, Python หวังว่าจะเป็นประโยชน์