🌱 Truyền mảng vào hàm trong C++
Trong C++, chúng ta có thể truyền mảng làm đối số trong hàm, và cũng có thể trả về một mảng từ hàm.Bài viết trước về mảng và hàm trong C++.
👉 Cú pháp truyền mảng vào hàm
returnType functionName(dataType arrayName[arraySize])
{
// code
}
Ví dụ khai báo
int display(int marks[5])
{
// code
}
Ở đây, một mảng kiểu int là marks được truyền vào hàm display(), kích thước của mảng là 5.
👉 Ví dụ truyền mảng vào hàm
#include <iostream>
using namespace std;
void display(int marks[5])
{
cout << "Displaying marks: " << endl;
// display array elements
for (int i = 0; i < 5; ++i)
{
cout << "Student " << i + 1 << ": " << marks[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;
}
Run This Code
➥ Các bạn có thể bấm "Run This Code", kết quả hiển thị trên màn hình console như sau.
Displaying marks:
Student 1: 88
Student 2: 76
Student 3: 90
Student 4: 61
Student 5: 69
👉 Kết luận
Ở đây chúng ta định nghĩa hàm void display(int marks[5]) với đối số là một mảng kiểu int. Tuy nhiên trong hàm main(), hàm display() được gọi, và chỉ truyền vào tên của mảng - display(marks);.
➤ Về bản chất, chúng ta không thể truyền toàn bộ mảng vào hàm, nếu như truyền cả 5 phần tử của mảng marks vào hàm, thì khi Function Call, bộ nhớ stack được sử dụng sẽ rất lớn.
➤ Vì vậy, C/C++ chỉ hỗ trợ việc truyền vào hàm tên của mảng (tức là địa chỉ phần tử đầu tiên trong mảng).
Việc định nghĩa tham số int marks[5] sẽ được tự động chuyển đổi thành int* marks, marks ở đây là một con trỏ chứa địa chỉ phần tử đầu tiên của mảng marks[5], số 5 ở đây chỉ là quy ước của người định nghĩa hàm, không có ý nghĩa sử dụng.
👉 Trả về một mảng từ hàm
Tương tự như việc truyền tham số, việc trả về một mảng từ hàm bản chất cũng là trả về địa chỉ phần tử đầu tiên của mảng.
>>>= Follow ngay =<<<
Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊