tek4

Mảng và hàm trong C++

by - September. 26, 2021
Kiến thức
Học
<p>Trong b&agrave;i viết n&agrave;y, ch&uacute;ng ta sẽ c&ugrave;ng t&igrave;m hiểu về c&aacute;ch truyền mảng một chiều v&agrave; đa chiều l&agrave;m tham số của một h&agrave;m trong C ++ với c&aacute;c v&iacute; dụ dẫn chứng.</p> <p>Trong C ++, ch&uacute;ng ta c&oacute; thể truyền mảng l&agrave;m tham số cho một h&agrave;m v&agrave; cũng c&oacute; thể trả kết quả về mảng cho một h&agrave;m. Ta c&oacute; thể truyền mảng l&agrave;m đối số cho một h&agrave;m giống như truyền biến. Để truyền mảng cho h&agrave;m, ta cần sử dụng t&ecirc;n mảng trong khi gọi h&agrave;m.</p> <p><strong><em>C&uacute; ph&aacute;p để truyền mảng l&agrave;m tham số:</em></strong></p> <pre class="language-markup"><code>Kiểu_dữ_liệu t&ecirc;n_h&agrave;m (kiểu_dữ_liệu t&ecirc;n_mảng [số_phần_tử]) { // đoạn m&atilde; }</code></pre> <h1>Truyền mảng một chiều</h1> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>int tinh_tong(int day_so[4]) { // đoạn m&atilde; }</code></pre> <p>Ở đ&acirc;y, ch&uacute;ng ta đ&atilde; truyền một mảng c&oacute; kiểu dữ liệu int v&agrave; k&iacute;ch thước l&agrave; 4 phần tử, c&oacute; t&ecirc;n l&agrave; day_so cho h&agrave;m tinh_tong ().</p> <p>V&iacute; dụ: Truyền mảng 1 chiều cho h&agrave;m.</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; void in_day_so(int a[4]) { cout &lt;&lt; "Day so la: " &lt;&lt; endl; for (int i = 0; i &lt; 4; i++) { cout &lt;&lt; "So thu " &lt;&lt; i + 1 &lt;&lt; "= " &lt;&lt; a[i] &lt;&lt; endl; } } int main() { int day_so[4] = {1, 2, 3, 4}; in_day_so(day_so); return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Day so la: So thu 1= 1 So thu 2= 2 So thu 3= 3 So thu 4= 4</code></pre> <p>Trong đ&oacute;, khi ch&uacute;ng ta gọi một h&agrave;m bằng c&aacute;ch truyền một mảng l&agrave;m tham số, th&igrave; chỉ t&ecirc;n của mảng được sử dụng.</p> <p>Trong c&acirc;u lệnh in_day_so(day_so);, day_so sẽ đại diện cho địa chỉ trong bộ nhớ của phần tử đầu ti&ecirc;n của mảng day_so [4]. Tuy nhi&ecirc;n, h&atilde;y để &yacute; tham số của h&agrave;m void in_day_so (int a[4]). Ở đ&acirc;y, ch&uacute;ng ta sử dụng khai b&aacute;o đầy đủ của mảng trong tham số của h&agrave;m, bao gồm cả dấu ngoặc vu&ocirc;ng []. Tham số của h&agrave;m int a [4] chuyển th&agrave;nh int *a ; đ&acirc;y l&agrave; một con trỏ đến c&ugrave;ng một địa chỉ được trỏ bởi mảng day_so. Điều n&agrave;y c&oacute; nghĩa l&agrave; khi ch&uacute;ng ta thao t&aacute;c với a [4] trong th&acirc;n h&agrave;m, tức l&agrave; ch&uacute;ng ta đang thao t&aacute;c với mang day_so. C ++ xử l&yacute; việc truyền một mảng cho một h&agrave;m theo c&aacute;ch n&agrave;y để tiết kiệm bộ nhớ v&agrave; thời gian.</p> <h1>Truyền mảng nhiều chiều cho một h&agrave;m</h1> <p>Ch&uacute;ng ta cũng c&oacute; thể chuyển mảng nhiều chiều l&agrave;m tham số cho h&agrave;m.</p> <p>V&iacute; dụ 2: Truyền mảng đa chiều cho một h&agrave;m</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; void in_day_so(int a[][2]) { cout &lt;&lt; "Mang da chieu: " &lt;&lt; endl; for (int i = 0; i &lt; 2; ++i) { for (int j = 0; j &lt; 2; ++j) { cout &lt;&lt; "phan tu[" &lt;&lt; i &lt;&lt; "][" &lt;&lt; j &lt;&lt; "] la " &lt;&lt; a[i][j] &lt;&lt; endl; } } } int main() { int mang_da_chieu[2][2] = { {1, 2}, {3, 4} }; in_day_so(mang_da_chieu); return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Mang da chieu: phan tu[0][0] la 1 phan tu[0][1] la 2 phan tu[1][0] la 3 phan tu[1][1] la 4</code></pre> <p>Trong chương tr&igrave;nh tr&ecirc;n, ch&uacute;ng ta đ&atilde; định nghĩa một h&agrave;m c&oacute; t&ecirc;n l&agrave; in_day_so (). H&agrave;m n&agrave;y nhận một mảng hai chiều, int a [] [2] l&agrave;m tham số của n&oacute; v&agrave; in ra c&aacute;c phần tử của mảng. Trong khi gọi h&agrave;m, ch&uacute;ng ta chỉ chuyển t&ecirc;n của mảng hai chiều l&agrave;m tham số h&agrave;m in_day_so (mang_da_chieu).</p> <p><strong>Ch&uacute; &yacute;: Kh&ocirc;ng bắt buộc phải chỉ định số h&agrave;ng trong mảng. Tuy nhi&ecirc;n, số lượng cột phải lu&ocirc;n được chỉ định. Đ&acirc;y l&agrave; l&yacute; do tại sao ch&uacute;ng ta sử dụng int a [] [2].</strong></p> <p>Ch&uacute;ng ta c&oacute; thể truyền mảng nhiều hơn 2 chiều l&agrave;m tham số cho một h&agrave;m</p> <h1>Trả về một mảng cho một h&agrave;m</h1> <p>Ch&uacute;ng ta cũng c&oacute; thể trả về một mảng cho một h&agrave;m. Tuy nhi&ecirc;n, gi&aacute; trị của mảng sẽ kh&ocirc;ng được trả về. Thay v&agrave;o đ&oacute;, địa chỉ của phần tử đầu ti&ecirc;n trong mảng được trả về với sự trợ gi&uacute;p của con trỏ. V&igrave; ch&uacute;ng ta chưa đề cập tới con trỏ, n&ecirc;n phần trả về một mảng cho h&agrave;m sẽ được đề cập trong c&aacute;c b&agrave;i sau.</p> <p>Tr&ecirc;n đ&acirc;y l&agrave; kh&aacute;i niệm v&agrave; v&iacute; dụ cơ bản về h&agrave;m v&agrave; mảng 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>