Lấy kích thước struct trong C++ | Laptrinhcanban.com

Lấy kích thước struct trong C++

Hướng dẫn cách lấy kích thước struct trong C++. Bạn sẽ học được cách sử dụng toán tử sizeof để lấy kích thước struct trong C++ sau bài học này.

Kích thước struct trong C++

Kích thước struct trong C++ là kích thước mà struct đó chiếm trong bộ nhớ máy tính. Kích thước struct trong C++ được tính bởi đơn vị byte, và kích thước của nó được tính bằng tổng kích thước của tất cả các thành viên trong nó, cộng thêm một bộ nhớ đệm (padding memory) ở giữa các thành viên nhằm tăng tốc độ truy cập của máy tính.

Kích thước struct trong C++

Khác với các loại dữ liệu khác, ví dụ như mảng với kích thước mảng bằng đúng tổng kích thước của các phần tử tạo nên mảng, thì kích thước của struct trong C++ thường lớn hơn tổng kích thước của các phần tử tạo nên nó.

Nguyên nhân là do các thành viên của struct được bố trí ở những vị trí thuận tiện cho việc truy cập nhằm tăng tốc độ truy cập của máy tính. Kết quả là, một khoảng trống (được gọi là đệm, tiếng anh là padding) được tạo ra giữa các thành viên và làm kích thước bộ nhớ tổng thể tăng lên.

Lấy kích thước struct trong C++ | toán tử sizeof()

Toán tử sizeof là một toán tử để kiểm tra kích thước bộ nhớ của các đối tượng trong chương trình C++ như biến, struct chẳng hạn. Toán tử sizeof trả về kích thước bộ nhớ của một biến hoặc một struct được tính bằng đơn vị byte.

Ứng dụng toán tử sizeof(), chúng ta có thể lấy kích thước struct trong C++ với cú pháp sau đây:

sizeof (name);

Trong đó name chính là tên của thực thể của struct chúng ta cần lấy kích thước.

Ví dụ, chúng ta lấy kích thước struct trong C++ như sau:

#include <iostream>
using namespace std;

typedef struct {
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;

int main(){
person_t p;

cout << "name="<< sizeof(p.name)<<" sex="<< sizeof(p.sex)<<" age="<< sizeof(p.age)
<<" height="<< sizeof(p.height)<<" weight="<< sizeof(p.weight)<<endl;
cout << "person_t= "<< sizeof(p);
}

Kết quả phép lấy kích thước struct như sau:

name=20 sex=1 age=4 height=8 weight=8
person_t= 48

Bạn có thể thấy rõ tổng kích thước của tất cả các thành viên trong struct là 41, tuy nhiên kích thước thực của struct lại là 48. Lý do là vì một khoảng bộ nhớ trống (padding memory) đã được thêm vào giữa các thành viên, nhằm tăng tốc độ truy cập của máy tính tới các thành viên trong struct. Kết quả, kích thước thực của struct mới lớn hơn tổng kích thước của các thành viên như trên.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách lấy kích thước struct trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.