Truyền mảng cho một hàm trong lập trình C++

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 intmả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,

  1. 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] .
  2. 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 [].
  3. Tham số hàm int m[5]chuyển đổi thành int* 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.









Gõ tìm kiếm nhanh...