Khóa học c

Truyền mảng vào hàm trong C

0 phút đọc

Trong bài học này, chúng ta sẽ học cách chuyển mảng (cả mảng một chiều và nhiều chiều) cho một hàm trong lập trình C.

Chúng ta sẽ có những phương pháp hay dùng như sau:

  • Pass Individual Array Elements
  • Pass Arrays to Functions
  • Pass Multidimensional Arrays to a Function

Pass Individual Array Elements

Trong lập trình C, ta có thể chuyển toàn bộ mảng cho các hàm. Trước khi chúng ta tìm hiểu điều đó, hãy xem cách chúng ta có thể chuyển các phần tử riêng lẻ của một mảng cho các hàm.

Ví dụ:

cpp Copy
#include <stdio.h>

void display(int num1, int num2);

int main() {
    int num[] = {1, 4, 3, 5};

    //chuyền vào phần tử thứ nhất và phần tử thứ 3 vào hàm display()
    display(num[0], num[2]);
    return 0;
}

void display(int num1, int num2) {
    printf("%d\n", num1);
    printf("%d\n", num2);
}

Kết quả

1
3

Tại đây chúng ta đã truyền tham số vào trong hàm display giống như cách chúng ta truyền các biến cho hàm.

cpp Copy
//chuyền vào phần tử thứ nhất và phần tử thứ 3 vào hàm display()
display(num[0], num[2]);

Chúng ta có thể thấy điều này trong định nghĩa hàm display(), trong đó các tham số của hàm là các biến riêng lẻ:

cpp Copy
void display(int num1, int num2);

Pass Arrays to Functions

Ví dụ:

cpp Copy
#include <stdio.h>

float sum(float num[]);

int main() {
    float result, num[] = {26.5, 37.2, 21.2, 3.6, 34.2};

    // mảng num được truyền vào hàm sum
    result = sum(num);
    printf("Result = %.2f", result);
    return 0;
}

float sum(float num[]) {
    float s = 0.0;

    for (int i = 0; i < 5; ++i) {
        s += num[i];
    }

    return s;
}

Kết quả

Result = 122.70

Để truyền toàn bộ mảng cho một hàm, ta chỉ truyền tên của mảng vào hàm (chỉ truyền num chứ không truyền num[]).

cpp Copy
result = sum(num);

Lưu ý

Việc sử dụng [] trong khai báo hàm vì điều này đồng nghĩa việc ta đang thông báo cho trình biên dịch là ta đang truyền mảng một chiều cho hàm.

cpp Copy
float sum(float num[]) {
    //code
}

Pass Multidimensional Arrays to a Function

Để truyền mảng đa chiều cho một hàm, ta chỉ truyền tên của mảng vào hàm (tương tự như mảng một chiều).

Ví dụ:

cpp Copy
#include <stdio.h>
void display(int num[][2]);

int main() {
    int num[2][2];
    printf("Enter 4 numbers:\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            scanf("%d", &num[i][j]);
        }
    }

    // pass multi-dimensional array to a function
    display(num);

    return 0;
}

void display(int num[][2]) {
    printf("4 numbers you entered:\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
      printf("%d\n", num[i][j]);
        }
    }
}

Kết quả

Enter 4 numbers:
1 5 4 6
4 numbers you entered:
1
5
4
6

Khi truyền mảng hai chiề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.

cpp Copy
void display(int num[][2]);
Avatar
Được viết bởi

Admin Team

Gợi ý câu hỏi phỏng vấn

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết
Không có dữ liệu

Không có dữ liệu

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào