Typedef struct trong c là gì năm 2024
Trong bài hướng dẫn này, bạn sẽ cùng Lập trình không khó tìm hiểu về kiểu struct trong C (kiểu cấu trúc). Bạn sẽ học cách định nghĩa và sử dụng kiểu cấu trúc với sự đi kèm của các ví dụ. Nếu dịch từ tiếng anh ra thì nghĩa của nó là kiểu cấu trúc, tuy nhiên chúng ta vẫn thường hay gọi nó là kiểu struct. Nhưng mục tiêu sau cùng của chúng ta là hiểu và biết cách sử dụng struct trong C, cùng bắt đầu nào… Show
Cách định nghĩa struct trong CTrước khi chúng ta có thể khai báo biến với struct, bạn cần định nghĩa nó – Đó cũng là lý do tại sao struct được gọi là kiểu dữ liệu người dùng định nghĩa. Khi nào chúng ta cần phải tự định nghĩa 1 kiểu cấu trúc? Khi bạn cần lưu trữ một đối tượng có nhiều thuộc tính. Ví dụ, đối tượng SinhVien có các thuộc tính (Mã sinh viên, họ, tên, giới tính, quê quán,…) hay đối tượng LopHoc có các thuộc tính (Mã lớp, tên lớp, giáo viên chủ nhiệm, sĩ số,…). Khi đó chúng ta nên dùng struct để quản lý chương trình. Cú pháp định nghĩa struct trong Cstruct structureName { };Dưới đây là 1 ví dụ: struct SinhVien { };Như vậy, kiểu dữ liệu struct SinhVien { };8 đã được định nghĩa. Từ đây chúng ta có thể khai báo các biến với kiểu dữ liệu này. Cách khai báo biến kiểu struct trong CViệc khai báo biến với struct cũng giống như cách khai báo biến thông thường, trong đó kiểu dữ liệu là kiểu struct trong C mà bạn vừa định nghĩa. Xem ví dụ dưới đây: struct SinhVien { };
int main(){ }Truy xuất các thuộc tính của structChúng ta có 2 toán tử dùng để truy xuất tới các biến thành viên của kiểu struct trong C.
Giả sử trong ví dụ trên, bạn muốn truy xuất struct SinhVien { };9 của đối tượng sinh viên, bạn làm như sau: SinhVien sv; // to do printf("Gioi tinh: %s", sv.gioiTinh); Từ khóa typedefBạn có thể sử dụng từ khóa struct SinhVien { };
int main(){ }0 để tạo ra một tên thay thế cho kiểu dữ liệu đã có. Nó thường được sử dụng kiểu struct để đơn giản hóa cú pháp khai báo biến. Nhưng nó cũng có thể sử dụng với các kiểu dữ liệu nguyên thủy nhé. struct Distance{ };
int main() { }Code trên tương đương với: typedef struct SinhVien{ } distances;
int main() { }Hoặc: struct PhanSo{ };
typedef struct PhanSo PS;Hoặc bạn có thể dùng với kiểu nguyên thủy như sau: typedef int U_INT8; // Khai báo biến kiểu int U_INT8 value; Tuy nhiên, nếu không có nhu cầu thực tế thì ta cũng không nên bày vẽ làm gì. Trong một số code đặc thù ta muốn có quy chuẩn riêng thì nên dùng. Cấu trúc struct lồng nhauGiả sử bạn muốn xây dựng kiểu dữ liệu để lưu trữ đối tượng Tam giác, khi đó chúng ta có thể xây dựng struct mô tả tọa độ của 1 điểm, khi đó đối tượng tam giác sẽ là 3 đối tượng điểm. Cụ thể: struct Point{ };
struct Triangle{ }
int main(){ }Sau đây là các ví dụ sử dụng kiểu cấu trúc struct trong C vào các bài tập thực tế. Các bạn tham khảo và chạy thử cũng như thử sửa đổi các code mẫu này để hiểu hơn về struct nhé. Chương trình cộng trừ nhân chia phân số trong CCode này mình giả sử các bạn nhập mẫu số cho phân số khác 0 nhé. Bạn có thể kiểm tra bổ sung thêm các tùy chọn/ chức năng để code tối ưu hơn. Phần thuật toán tìm ước chung lớn nhất, bạn có thể xem tại bài tìm ước chung lớn nhất. include
include
include int UCLN(int a, int b) { }
int BSCNN(int a, int b)
{ }
typedef struct PhanSo
{ } PS;
PS rutGon(PS a)
{ }
PS cong(PS a, PS b)
{ }
PS tru(PS a, PS b)
{ }
PS nhan(PS a, PS b)
{ }
PS chia(PS a, PS b)
{ }
void print(PS a)
{ }
int main()
{ }Kết quả chạy: struct SinhVien { };0 Struct và con trỏTương tự như khai báo con trỏ với các kiểu dữ liệu có sẵn trong C. Chúng ta cũng có thể khai báo biến con trỏ, cấp phát động cho biến con trỏ kiểu struct. Sau đây là cách chúng ta khai báo biến con trỏ kiểu struct trong C: struct SinhVien { };1 Khi đó struct SinhVien { };
int main(){ }1 là con trỏ kiểu struct SinhVien { };
int main(){ }2, còn struct SinhVien { };
int main(){ }3 là biến kiểu struct SinhVien { };
int main(){ }2. Để truy cập vào các biến thành viên sử dụng biến con trỏ của struct trong C, bạn dùng struct SinhVien { };
int main(){ }5, ví dụ: struct SinhVien { };2 Trong ví dụ này, địa chỉ của biến struct SinhVien { };
int main(){ }6 được lưu giữ bởi con trỏ struct SinhVien { };
int main(){ }7. Và bạn có thể thao tác với biến con trỏ giống như chúng ta đã học ở bài Con trỏ trong C. Ta có:
Cấp phát bộ nhớ độngTrước khi bạn đọc phần này, mình hi vọng các bạn đã có kiến thức về cấp phát động trong C. Đôi khi, số lượng biến struct trong C mà chúng ta cần có thể lớn. Khi đó có thể bạn sẽ cần tới cấp phát động trong quá trình chương trình thực thi. Dưới đây là cách để cấp phát bộ nhớ động với kiểu cấu trúc: struct SinhVien { };3 Kết quả khi chạy chương trình: struct SinhVien { };4 Trong ví dụ trên, sau khi người dùng nhập số lượng SinhVien sv; // to do printf("Gioi tinh: %s", sv.gioiTinh); 2 thì ta mới tiến hành cấp phát đúng SinhVien sv; // to do printf("Gioi tinh: %s", sv.gioiTinh); 2 ô nhớ sử dụng dòng lệnh này: struct SinhVien { };5 Và sau đó, ta dùng con trỏ struct SinhVien { };
int main(){ }1 để truy cập vào các thành viên của SinhVien sv; // to do printf("Gioi tinh: %s", sv.gioiTinh); 5. Hoặc bài tập cấp phát động cho kiểu cấu trúc sinh viên dưới đây, ta thực hiện nhập, xuất và sắp xếp danh sách sinh viên theo điểm sử dụng cấp phát động cho con trỏ trong C++ (new và delete): struct SinhVien { };6 Kết quả chạy: struct SinhVien { };7 Ngoài ra, mình cũng có một bài hướng dẫn chi tiết và nâng cao hơn: Bài tập quản lý sinh viên sử dụng struct trong C. Các bạn tiếp tục tham khảo bài viết này nhé! Typedef in C là gì?Typedef được sử dụng để tạo tên mới cho một kiểu dữ liệu nào đó từ một kiểu dữ liệu có sẵn nhằm thuận tiện cho việc code. Ví dụ 1: typedef char* STRING; STRING abc = “Hello World”; Ở đây chúng ta khai báo một kiểu dữ liệu mới là STRING, bản chất nó chính là kiểu char*. Struct trong C là gì?Struct trong C là một kiểu dữ liệu tùy chỉnh, được sử dụng để lưu trữ các biến có kiểu dữ liệu khác nhau ở một đối tượng duy nhất. Một struct được định nghĩa bằng cách liệt kê tất cả các biến thành viên bên trong nó, và mỗi biến thành viên có thể có một kiểu dữ liệu khác nhau. Cấu trúc từ trò là gì?Cấu trúc có ít nhất một thành phần là con trỏ chỉ đến bản thân cấu trúc được gọi là cấu trúc tự trỏ. Lệnh struct là gì?Ta có thể hiểu struct là một dạng bản ghi, dùng để lưu trữ những thông tin chung nhất của nhiều đối tượng dữ liệu, ví dụ như mọi bản ghi của các sinh viên đại học trong hệ thống của nhà trường đều phải có tên, mã số sinh viên, ngày tháng năm sinh và ngành học; hoặc như ví dụ về lưu trữ các cuốn sách ở trên,... |