Truyền mảng vào hàm trong C++
Chúng ta đã tìm hiểu cách gọi hàm, các tham số của hàm là những biến có kiểu dữ liệu đơn giản như int, float, double... Trong bài viết hôm nay chúng ta cùng tìm hiểu tham số của hàm là mảng (Array). Vậy tham số của hàm là mảng thì có gì khác so với các tham số có các kiểu dữ liệu khác trong C++. Chúng ta sẽ cùng eLib tìm hiểu trong nội dung sau đây nhé.
Mục lục nội dung
1. Truyền mảng tới hàm trong C++
Để truyền dữ liệu của mảng vào hàm, chúng ta có thể tạo các hàm nhận mảng làm đối số. Để truyền mảng trong hàm, chúng ta chỉ cần viết tên mảng trong lệnh gọi hàm.
function_name(array_name); // truyền mảng
Có 3 cách để khai báo hàm nhận mảng làm đối số:
Cách thứ nhất:
return_type function(type array_name[])
Khai báo ký hiệu chỉ số trống [] là kỹ thuật được sử dụng rộng rãi.
Cách thứ hai:
return_type function(type array_name[SIZE])
Theo tùy chọn, chúng ta có thể xác định kích thước của mảng trong ký hiệu chỉ số [].
Cách thứ ba:
return_type function(type *array_name)
Bạn cũng có thể sử dụng khái niệm con trỏ.
2. Truyền một phần tử của mảng một chiều vào hàm trong C++
Một phần tử của một mảng có thể được truyền theo cách tương tự như truyền biến cho một hàm. Ví du:
#include <iostream>
using namespace std;
void display(int age) {
cout << age;
}
int main() {
int ageArray[] = { 2, 3, 4 };
display(ageArray[2]); //chi truyen phan tu ageArray[2].
return 0;
}
Kết quả:
4
3. Truyền toàn bộ mảng một chiều vào hàm
Trong khi truyền các mảng làm đối số cho hàm, chỉ có tên của mảng được truyền (tức là địa chỉ bắt đầu của vùng nhớ được chuyển làm đối số).
Chương trình C++ truyền một mảng chứa tuổi của người vào một hàm. Hàm này tìm độ tuổi trung bình và hiển thị độ tuổi trung bình trong hàm main().
#include <iostream>
using namespace std;
// dinh nghia prototype
float average(float age[]);
int main() {
float avg, age[] = { 23.4, 20, 22.6, 3, 40.5, 18};
avg = average(age); // chi ten cua mang duoc truyen nhu mot doi so
cout << "Tuoi trung binh la: " << avg;
return 0;
}
float average(float age[]) {
int i;
float avg, sum = 0.0;
for (i = 0; i < 6; ++i) {
sum += age[i];
}
avg = (sum / 6);
return avg;
}
Tuoi trung binh la: = 21.25
4. Truyền mảng đa chiều vào hàm
Để truyền mảng hai chiều tới một hàm làm đối số, địa chỉ bắt đầu của vùng bộ nhớ được đặt trước được truyền như trong mảng một chiều.
Ví dụ: Truyền các mảng hai chiều đến một hàm.
#include <iostream>
using namespace std;
const int ARR_X = 3;
const int ARR_Y = 4;
// dinh nghia prototype
void displayNumbers(int num[ARR_X][ARR_Y]);
int main() {
int num[ARR_X][ARR_Y], i, j;
printf("Nhap mang num :\n");
for (i = 0; i < ARR_X; i++) {
for (j = 0; j < ARR_Y; j++) {
printf("num[%d][%d]=", i, j);
cin >> num[i][j];
}
}
// truyen mang da chieu vao ham displayNumbers
displayNumbers(num);
return 0;
}
/*
* hien thi mang 2 chieu
*/
void displayNumbers(int num[ARR_X][ARR_Y]) {
int i, j;
printf("Mang 2 chieu:\n");
for (i = 0; i < ARR_X; i++) {
for (j = 0; j < ARR_Y; j++) {
printf("%d ", num[i][j]);
}
printf("\n");
}
}
Kết quả:
Nhap mang num :
num[0][0]=1
num[0][1]=2
num[0][2]=3
num[0][3]=4
num[1][0]=5
num[1][1]=6
num[1][2]=7
num[1][3]=8
num[2][0]=9
num[2][1]=10
num[2][2]=11
num[2][3]=12
Mang 2 chieu:
1 2 3 4
5 6 7 8
9 10 11 12
Trên đây là bài viết của eLib.VN về Truyền mảng vào hàm trong C++. Việc sử dụng mảng như là tham số của hàm thì cũng không khác gì với việc sử dụng các biến. Bạn đọc có thể nghiên cứu và tham khảo thêm. Chúc các bạn thành công!
Như vậy là chúng ta đã hoàn thành nội dung "C++ Array". Để củng cố và nắm vững nội dung đã học, mời bạn cùng thử sức với "Bộ Câu hỏi Trắc Nghiệm C++ có đáp án chi tiết"
Tham khảo thêm
- doc Mảng (array) trong C++
- doc Mảng 2 chiều trong C++