Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kết quả của toán tử sizeof trong C++


Toán tử sizeof là một trong những toán tử thường dùng nhất trong ngôn ngữ C dùng để tính kích thước của bất kỳ cấu trúc dữ liệu hoặc kiểu dữ liệu nào ta truyền vào. Toán tử sizeof trả về kiểu unsigned integer, và toán tử này có thể áp dụng cho kiểu dữ liệu nguyên thủy và hợp thành. Ta có thể dùng sizeof trực tiếp cho kiểu dữ liệu và biết bộ nhớ nó chiếm −

Ví dụ

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

Kết quả

4 1 4 8 8

Bằng cách sử dụng chức năng này, ta có thể biết không gian bất kỳ biến nào của kiểu dữ liệu này chiếm. Kết quả cũng phụ thuộc vào trình biên dịch vì trình biên dịch 16_bit sẽ cho giá trị khác cho int so với trình biên dịch 32_bit.

Ta cũng có thể áp dụng phép toán này cho biểu thức −

Ví dụ

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

Kết quả

4 4

Như bạn thấy, giá trị trước của x là 4, và ngay cả sau phép toán tiền tố, nó vẫn giữ nguyên. Tất cả điều này là do toán tử sizeof vì toán tử này được dùng trong lúc biên dịch, nên nó không thay đổi giá trị của biểu thức ta áp dụng.

Sự cần thiết của toán tử sizeof

Có nhiều trường hợp sử dụng toán tử sizeof. Nhưng nó chủ yếu dùng để xác định kích thước kiểu dữ liệu hợp thành như mảng, cấu trúc, union, v.v.

Ví dụ

#include <bits/stdc++.h> using namespace std; int main() {    int arr[] = {1, 2, 3, 4, 5}; // mảng cho trước    int size = sizeof(arr) / sizeof(int); // tính kích thước mảng    cout << size << "\n"; // xuất kích thước mảng cho trước }

Kết quả

5

Ở đây trước tiên ta tính kích thước toàn bộ mảng hoặc tính bộ nhớ nó chiếm. Sau đó chia số đó cho sizeof kiểu dữ liệu; trong chương trình này là int.

Trường hợp sử dụng quan trọng thứ hai của toán tử này là cấp phát bộ nhớ động, vì vậy ta dùng sizeof khi cấp phát không gian.

Ví dụ

#include <bits/stdc++.h> using namespace std; int main() {    int* ptr = (int*)malloc(10 * sizeof(int)); // ở đây ta cấp phát bộ nhớ 40 byte    // sizeof(int) là 4 và ta cấp phát 10 khối    // tức là 40 byte }

Kết luận

Trong bài viết này, ta thảo luận các trường hợp sử dụng của toán tử sizeof và cách nó hoạt động. Ta cũng viết mã các trường hợp sử dụng khác nhau để xem kết quả và thảo luận. Ta cài đặt các trường hợp sử dụng của toán tử này trong C++. Ta có thể viết cùng chương trình bằng ngôn ngữ khác như C, Java, Python, v.v. Hy vọng bạn thấy bài viết hữu ích.