Struct là gì trong c

Trong nhiều trường hợp, chúng ta cần lưu trữ một nhóm các biến dữ liệu khác nhau [int, float, char, string,…]. Ngôn ngữ C++ có hỗ trợ lập trình viên tạo ra kiểu dữ liệu cấu trúc [struct] để thực hiện lưu trữ như thế. Bài này sẽ giới thiệu định nghĩa và cách khai báo biến cấu trúc.

Cần viết chương trình lưu thông tin 1 sinh viên gồm các thông tin:

    • MSSV: kiểu chuỗi
    • Tên SV: kiểu chuỗi
    • Ngày sinh: kiểu chuỗi
    • Phái: kiểu luận lý
    • Điểm Toán, Lý, Hóa: kiểu số thực

Khai báo các biến lưu thông tin 1 sinh viên

    • string mssv; // “0306201123”
    • string hoten; // “Nguyễn Văn Minh”
    • string ngaysinh; // “16/08/2002”
    • bool phai; // true: Nữ, false: Nam
    • float Toan, Ly, Hoa; //8.5, 9, 7.5

Nếu cần lưu thông tin của 10 sinh viên hoặc hơn thì phải làm thế nào? Một sinh viên tạo 7 biến, không lẻ phải tạo 7×10 = 70 biến để lưu 10 sinh viên?

Giải pháp: Gom những thông tin của cùng một sinh viên thành một kiểu dữ liệu mới. Đó là kiểu dữ liệu cấu trúc [struct].

Kiểu dữ liệu cấu trúc [struct] là một nhóm các thành phần dữ liệu, được gom lại với nhau và đặt trong một tên. Trong đó:

– Mỗi thành phần dữ liệu gọi là trường dữ liệu hoặc thành viên.

– Các trường dữ liệu có thể có kiểu dữ liệu khác nhau.

– Lập trình viên tự định nghĩa kiểu dữ liệu cấu trúc gồm những thành phần dữ liệu.

Cú pháp định nghĩa một kiểu dữ liệu cấu trúc mới

struct

{

            ;

            …

            ;

};//lưu ý phải có dấu ;

Ví dụ:

struct DIEM { int x; int y; }; struct SINHVIEN { string mssv; string hoten; string ngaysinh; bool phai; float Toan, Ly, Hoa; };

Muốn sử dụng các kiểu cấu trúc đã định nghĩa để lưu trữ dữ liệu thì cần tạo ra các biến của kiểu cấu trúc đó. Cú pháp khai báo biến của kiểu cấu trúc là:

;

Ví dụ:

DIEM d1, d2; SINHVIEN sv1, sv2;

Định nghĩa kiểu cấu trúc và khai báo biến cấu trúc cùng lúc

Việc khai báo biến cấu trúc có thể được thực hiện đồng thời với việc định nghĩa cấu trúc. Muốn vậy, cần đặt danh sách tên biến cấu trúc cần khai báo sau dấu } theo cú pháp sau:

struct

{

            ;

            …

            ;

} , ,…, ;

Ví dụ:

struct DIEM { int x; int y; } d1, d2; struct SINHVIEN { string mssv; string hoten; string ngaysinh; bool phai; float Toan, Ly, Hoa; } sv1, sv2;

Khởi tạo giá trị cho biến cấu trúc

Cú pháp khởi tạo giá trị cho biến cấu trúc

= {,…,};

– Khởi tạo biến cấu trúc khi định nghĩa cấu trúcstruct DIEM { int x; int y; } d1 = {5, 9}, d2 = {1, 1}; – Khởi tạo biến cấu trúc khi khai báo biến cấu trúcstruct DIEM { int x; int y; }; DIEM d1 = {5, 9}; DIEM d2 = {1, 1};

Lưu ý: Có thể chỉ khởi tạo giá trị cho một số thành phần dữ liệu đầu tiên trong cấu trúc

DIEM d1 = {99};//chỉ khởi tạo giá trị cho x = 99, y không được khởi tạo. y sẽ nhận giá trị mặc định hoặc giá trị rác.

Thiếu dấu ; khi định nghĩa kiểu cấu trúc

struct DIEM { int x; int y; }//lỗi thiếu dấu ;

Khởi tạo biến cấu trúc sau khi khai báo sẽ gây lỗi

struct DIEM { int x; int y; }d1, d2; d1 = {1, 5};//lỗi DIEM d3; d3 = {1, 9};//lỗi

Không thể khởi tạo các thành phần cấu trúc trong khi định nghĩa cấu trúc

struct HINH_TRON { float x = 5.5; //Không hợp lệ float y = 3.2; //Không hợp lệ float BanKinh = 6; //Không hợp lệ }; Bài trước và bài sau trong môn học

Struct trong C/C++ Các mảng trong C/C++ cho phép bạn định nghĩa một vài loại biến có thể giữ giá trị của một vài thành viên cùng kiểu dữ liêu. Nhưng structure - cấu trúc là một loại dữ liệu khác trong ngôn ngữ lập trình C/C++, cho phép bạn kết hợp các dữ liệu khác kiểu nhau.

Cấu trúc được sử dụng để biểu diễn một bản ghi. Giả sử bạn muốn lưu trữ giá trị của một quyển sách trong thư viện của bạn. Bạn có thể lưu trữ các thuộc tính của sách sau đây:

  • Tiêu đề
  • Tác giả
  • Chủ đề
  • Book ID

Định nghĩa một cấu trúc trong C++

Để định nghĩa cấu trúc, bạn phải sử dụng câu lệnh struct. Câu lệnh struct định nghĩa một kiểu dữ liệu mới, với hơn một thành viên trong chương trình của bạn. Dạng tổng quát của câu lệnh struct như sau đây:

struct [ten cau truc] { phan dinh nghia thanh vien; phan dinh nghia thanh vien; ... phan dinh nghia thanh vien; } [mot hoac nhieu bien cau truc];

Quảng cáo

Ở đây, ten cau truc có thể tùy ý và một thành viên định nghĩa là các biến thường như int i, float j hoặc một định nghĩa biến khác …. Tại phần cuối cùng của định nghĩa cấu trúc, trước dấu chấm phẩy, bạn có thể xác định một hoặc nhiều biến cấu trúc [tùy chọn]. Dưới đây là cách khai báo biến cấu trúc Book:

struct Books { char tieude[50]; char tacgia[50]; char chude[100]; int book_id; }book;

Truy cập các thành viên của cấu trúc trong C++

Để truy cập bất kỳ thành viên nào của cấu trúc, bạn sử dụng toán tử truy cập phần tử [.]. Toán tử truy cập thành viên cấu trúc được mã hóa là dấu chấm giữa tên biến cấu trúc và thành viên cấu trúc mà bạn muốn truy cập. Bạn sẽ sử dụng từ khóa struct để định nghĩa các biến của kiểu cấu trúc. Dưới đây là ví dụ cho cách sử dụng cấu trúc trong C++:

#include #include using namespace std; struct Books { char tieude[50]; char tacgia[50]; char chude[100]; int book_id; }; int main[ ] { struct Books QuyenSach1; // Declare QuyenSach1 of type Book struct Books QuyenSach2; // Declare QuyenSach2 of type Book // chi tiet ve quyen sach thu nhat strcpy[ QuyenSach1.tieude, "Ngon ngu Lap trinh C++"]; strcpy[ QuyenSach1.tacgia, "Pham Van At"]; strcpy[ QuyenSach1.chude, "Lap trinh"]; QuyenSach1.book_id = 1225; // chi tiet ve quyen sach thu hai strcpy[ QuyenSach2.tieude, "Toi thay hoa vang tren co xanh"]; strcpy[ QuyenSach2.tacgia, "Nguyen Nhat Anh"]; strcpy[ QuyenSach2.chude, "Van hoc"]; QuyenSach2.book_id = 3214; // in thong tin ve QuyenSach1 cout

Chủ Đề