Trong hướng dẫn này, chúng ta sẽ học cách truyền mảng đơn chiều và đa chiều làm tham số hàm trong C ++ với sự trợ giúp của các ví dụ.
Trong C ++, chúng ta có thể truyền mảng làm đối số cho một hàm. Và, chúng ta cũng có thể trả về mảng từ một hàm.
Trước khi bạn tìm hiểu về truyền mảng như một đối số chức năng, chắc chắn rằng bạn biết về C ++ Mảng và hàm C ++ .
Cú pháp để truyền mảng làm tham số hàm
Cú pháp để truyền một mảng cho một hàm là:
returnType functionName(dataType arrayName[arraySize]) {
// code
}
Hãy xem một ví dụ,
int total(int marks[5]) {
// code
}
Ở đây, chúng ta đã truyền một int
mảng kiểu có tên là dấu cho hàm total()
. Kích thước của mảng là 5 .
Ví dụ 1: Truyền mảng một chiều cho một hàm
// C++ Program to display marks of 5 students
#include <iostream>
using namespace std;
// declare function to display marks
// take a 1d array as parameter
void display(int m[5]) {
cout << "Displaying marks: " << endl;
// display array elements
for (int i = 0; i < 5; ++i) {
cout << "Student " << i + 1 << ": " << m[i] << endl;
}
}
int main() {
// declare and initialize an array
int marks[5] = {88, 76, 90, 61, 69};
// call display function
// pass array as argument
display(marks);
return 0;
}
Đầu ra
Displaying marks: Student 1: 88 Student 2: 76 Student 3: 90 Student 4: 61 Student 5: 69
Đây,
- Khi chúng ta gọi một hàm bằng cách truyền một mảng làm đối số, chỉ tên của mảng được sử dụng.
display(marks);
Ở đây, các dấu đối số đại diện cho địa chỉ bộ nhớ của phần tử đầu tiên của các dấu mảng [5] . - Tuy nhiên, hãy để ý tham số của
display()
hàm.void display(int m[5])
Ở đây, chúng ta sử dụng khai báo đầy đủ của mảng trong tham số hàm, bao gồm cả dấu ngoặc vuông[]
. - Tham số hàm
int m[5]
chuyển đổi thànhint* m;
. Điều này trỏ đến cùng một địa chỉ được trỏ bởi các dấu mảng . Điều này có nghĩa là khi chúng ta thao tác với m [5] trong thân hàm, chúng ta thực sự đang thao tác với các dấu mảng ban đầu .
C ++ xử lý việc truyền một mảng đến một hàm theo cách này để tiết kiệm bộ nhớ và thời gian.
Truyền mảng đa chiều cho một hàm
Chúng ta cũng có thể truyền mảng Đa chiều làm đối số cho hàm. Ví dụ,
Ví dụ 2: Truyền mảng đa chiều cho một hàm
// C++ Program to display the elements of two
// dimensional array by passing it to a function
#include <iostream>
using namespace std;
// define a function
// pass a 2d array as a parameter
void display(int n[][2]) {
cout << "Displaying Values: " << endl;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 2; ++j) {
cout << "num[" << i << "][" << j << "]: " << n[i][j] << endl;
}
}
}
int main() {
// initialize 2d array
int num[3][2] = {
{3, 4},
{9, 5},
{7, 1}
};
// call the function
// pass a 2d array as an argument
display(num);
return 0;
}
Đầu ra
Displaying Values: num[0][0]: 3 num[0][1]: 4 num[1][0]: 9 num[1][1]: 5 num[2][0]: 7 num[2][1]: 1
Trong chương trình trên, chúng ta đã định nghĩa một hàm có tên display()
. Hàm nhận một mảng hai chiều, int n[][2]
làm đối số của nó và in ra các phần tử của mảng.
Trong khi gọi hàm, chúng ta chỉ chuyển tên của mảng hai chiều làm đối số của hàm display(num)
.
Lưu ý : Không bắt buộc phải chỉ định số hàng trong mảng. Tuy nhiên, số lượng cột phải luôn được chỉ định. Đây là lý do tại sao chúng tôi đã sử dụng int n[][2]
.
Chúng ta cũng có thể truyền các mảng có nhiều hơn 2 thứ nguyên như một đối số của hàm.
C ++ Trả về một mảng từ một hàm
Chúng ta cũng có thể trả về một mảng từ hàm. Tuy nhiên, mảng thực tế không được trả về. Thay vào đó, địa chỉ của phần tử đầu tiên của mảng được trả về với sự trợ giúp của con trỏ .
Chúng ta sẽ tìm hiểu về cách trả về mảng từ một hàm trong các bài hướng dẫn sắp tới.