tek4

Cấu trúc Struct trong C++

by - September. 26, 2021
Kiến thức
Học
<p>Cấu tr&uacute;c Struct trong C++ l&agrave; một trong c&aacute;c kh&aacute;i niệm cơ bản v&agrave; quan trọng trong lập tr&igrave;nh. Trong b&agrave;i n&agrave;y, ta sẽ c&ugrave;ng t&igrave;m hiểu về cấu tr&uacute;c trong lập tr&igrave;nh C ++ bao gồm kh&aacute;i niệm, c&aacute;ch định nghĩa v&agrave; c&aacute;ch sử dụng trong chương tr&igrave;nh c&ugrave;ng với c&aacute;c v&iacute; dụ dẫn chứng.</p> <h1>Cấu tr&uacute;c Struct</h1> <p>V&iacute; dụ: Ta muốn lưu trữ một số th&ocirc;ng tin về một người: t&ecirc;n, tuổi v&agrave; ng&agrave;y th&aacute;ng năm sinh, chứng minh nh&acirc;n d&acirc;n. Ta c&oacute; thể dễ d&agrave;ng tạo c&aacute;c t&ecirc;n biến kh&aacute;c nhau để lưu trữ c&aacute;c th&ocirc;ng tin n&agrave;y một c&aacute;ch ri&ecirc;ng biệt.</p> <p>Tuy nhi&ecirc;n, v&igrave; c&oacute; rất nhiều người, n&ecirc;n ta cần phải lưu trữ cho tất cả mọi người. B&acirc;y giờ, ta cần tạo c&aacute;c biến kh&aacute;c nhau cho từng người: T&ecirc;n_1, tuổi_1, ng&agrave;y_sinh, Chứngminh_1&hellip;</p> <p>Điều n&agrave;y sẽ rất mất thời gian nếu phải tạo từng tập dữ liệu cho từng người. Một c&aacute;ch tiếp cận tốt hơn sẽ l&agrave; c&oacute; một tập hợp c&aacute;c th&ocirc;ng tin li&ecirc;n quan với một t&ecirc;n duy nhất l&agrave; Ca_nhan v&agrave; sử dụng n&oacute; cho tất cả mọi người. Tập hợp n&agrave;y được gọi l&agrave; một cấu tr&uacute;c.</p> <p>Cấu tr&uacute;c l&agrave; một tập hợp c&aacute;c biến với c&aacute;c kiểu dữ liệu kh&aacute;c nhau với một t&ecirc;n duy nhất v&agrave; do người lập tr&igrave;nh tự định nghĩa. N&oacute; tương tự như một lớp class l&agrave; cả hai đều chứa một tập hợp dữ liệu thuộc c&aacute;c kiểu dữ liệu kh&aacute;c nhau.</p> <h2>C&aacute;ch khai b&aacute;o cấu tr&uacute;c trong lập tr&igrave;nh C ++</h2> <p>Từ kh&oacute;a Struct x&aacute;c định một kiểu cấu tr&uacute;c v&agrave; sau n&oacute; l&agrave; một t&ecirc;n định danh (t&ecirc;n của cấu tr&uacute;c). Khi đ&oacute; b&ecirc;n trong dấu ngoặc nhọn, ta c&oacute; thể khai b&aacute;o một hoặc nhiều biến.</p> <p><strong><em>C&uacute; ph&aacute;p:</em></strong></p> <pre class="language-markup"><code>struct t&ecirc;n_cấu_tr&uacute;c{ th&agrave;nh_vi&ecirc;n1; th&agrave;nh_vi&ecirc;n2; th&agrave;nh_vi&ecirc;n3; ... };</code></pre> <p>Trong đ&oacute;, th&agrave;nh vi&ecirc;n l&agrave; c&aacute;c biến th&ocirc;ng thường được khai b&aacute;o trong C++. Ngo&agrave;i ra, c&aacute;c th&agrave;nh vi&ecirc;n cũng c&oacute; thể l&agrave; c&aacute;c h&agrave;m.</p> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>struct sinh_vien { char Ten[30]; int ID; int Tuoi; void in_thong_tin(){ cout&lt;&lt; Ten &lt;&lt; ID &lt;&lt; Tuoi &lt;&lt; endl; } };</code></pre> <p>Ở đ&acirc;y, một cấu tr&uacute;c sinh_vien được định nghĩa với ba biến l&agrave;: Ten, ID v&agrave; Tuoi. Khi một cấu tr&uacute;c được tạo, sẽ kh&ocirc;ng c&oacute; bộ nhớ n&agrave;o được cấp ph&aacute;t. Định nghĩa cấu tr&uacute;c chỉ l&agrave; để thiết kế v&agrave; tạo c&aacute;c biến. Ta c&oacute; thể xem n&oacute; như một kiểu dữ liệu. V&iacute; dụ khi ta x&aacute;c định một số nguy&ecirc;n như sau:</p> <pre class="language-cpp"><code>int so_nguyen;</code></pre> <p>int l&agrave; một kiểu dữ liệu v&agrave; biến so_nguyen chỉ c&oacute; thể chứa gi&aacute; trị số nguy&ecirc;n. Cấu tr&uacute;c cũng tương tự như vậy.</p> <p><strong>Ch&uacute; &yacute;: Nhớ kết th&uacute;c khai b&aacute;o bằng dấu chấm phẩy (;)</strong></p> <h2>L&agrave;m thế n&agrave;o để x&aacute;c định một biến c&oacute; kiểu cấu tr&uacute;c?</h2> <p>Sau khi ta khai b&aacute;o một cấu tr&uacute;c như tr&ecirc;n. Ta c&oacute; thể x&aacute;c định một biến c&oacute; kiểu cấu tr&uacute;c như sau:</p> <pre class="language-cpp"><code>sinh_vien a;</code></pre> <p>Khi biến c&oacute; kiểu cấu tr&uacute;c được x&aacute;c định, chỉ khi đ&oacute; bộ nhớ mới được tr&igrave;nh bi&ecirc;n dịch cấp ph&aacute;t.</p> <h2>L&agrave;m thế n&agrave;o để truy cập v&agrave;o c&aacute;c biến của một cấu tr&uacute;c?</h2> <p>C&aacute;c biến trong một cấu tr&uacute;c được truy cập bằng c&aacute;ch sử dụng to&aacute;n tử dấu chấm (.). Giả sử, ta muốn truy cập độ tuổi của sinh vi&ecirc;n v&agrave; g&aacute;n gi&aacute; trị l&agrave; 20. Ta thực hiện như sau:</p> <pre class="language-cpp"><code>a.Tuoi = 20;</code></pre> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; struct sinh_vien{ char Ten[30]; int Tuoi; int ID; }; int main(){ sinh_vien a; cout &lt;&lt; "Ten sinh vien: "; cin.get(a.Ten, 30); cout &lt;&lt; "Tuoi: "; cin &gt;&gt; a.Tuoi; cout &lt;&lt; "ID: "; cin &gt;&gt; a.ID; cout &lt;&lt; "Thong tin ve sinh vien a" &lt;&lt; endl; cout &lt;&lt; "Ten: " &lt;&lt; a.Ten &lt;&lt; endl; cout &lt;&lt;"Tuoi: " &lt;&lt; a.Tuoi &lt;&lt; endl; cout &lt;&lt; "ID: " &lt;&lt; a.ID; return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Ten sinh vien: Tran A Tuoi: 20 ID: 1 Thong tin ve sinh vien a Ten: Tran A Tuoi: 20 ID: 1</code></pre> <p>Ở đ&acirc;y, một cấu tr&uacute;c sinh_vien được khai b&aacute;o gồm c&oacute; ba biến l&agrave; Ten, Tuoi v&agrave; ID. B&ecirc;n trong h&agrave;m main (), một biến c&oacute; kiểu cấu tr&uacute;c a được định nghĩa. Sau đ&oacute;, người d&ugrave;ng được y&ecirc;u cầu nhập th&ocirc;ng tin v&agrave; dữ liệu. Sau đ&oacute; th&ocirc;ng tin vừa nhập được hiển thị.</p> <p>V&iacute; dụ: Khai b&aacute;o h&agrave;m tạo cho cấu tr&uacute;c.</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; struct sinh_vien{ int ID_sv; sinh_vien(int a) { ID_sv = a; } void in_thong_tin() { cout&lt;&lt;"ID cua sinh vien la: "&lt;&lt; ID_sv; } }; int main() { struct sinh_vien sv = sinh_vien(1); sv.in_thong_tin(); return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>ID cua sinh vien la: 1</code></pre> <p>Tr&ecirc;n đ&acirc;y l&agrave; c&aacute;c kh&aacute;i niệm v&agrave; kiến thức cơ bản về cấu tr&uacute;c Struct trong C++. Hy vọng mọi người c&oacute; thể &aacute;p dụng v&agrave;o trong chương tr&igrave;nh của m&igrave;nh. Mọi người h&atilde;y tiếp tục theo d&otilde;i c&aacute;c b&agrave;i mới nhất tr&ecirc;n <a href="http://tek4.vn">tek4</a> nh&eacute;!</p>