Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Cách truyền toàn bộ mảng làm đối số trong ngôn ngữ C


Mảng là một nhóm các mục liên quan được lưu trữ với một tên chung.

Khai báo mảng

Cú pháp khai báo mảng như sau:

kiểu_du_lieu ten_mang [kich_thuoc];

Khởi tạo

Mảng có thể được khởi tạo theo hai cách:

  • Khởi tạo tại thời điểm biên dịch (Compile time).
  • Khởi tạo tại thời điểm chạy (Runtime).

Mảng cũng có thể được khởi tạo ngay khi khai báo như sau:

int a[5] = {100,200,300,400,500};

Hàm

Hàm là một khối độc lập thực hiện một nhiệm vụ cụ thể. Có hai cách truyền mảng làm đối số cho hàm:

  • Truyền toàn bộ mảng làm đối số.

  • Truyền từng phần tử riêng lẻ làm đối số.

Hãy tìm hiểu cách truyền toàn bộ mảng làm đối số cho hàm trong C.

Truyền toàn bộ mảng làm đối số cho hàm

  • Để truyền toàn bộ mảng, hãy truyền tên mảng trong lời gọi hàm.

  • Để nhận toàn bộ mảng, một mảng phải được khai báo trong phần đầu hàm.

Ví dụ 1

Tham khảo ví dụ dưới đây:

#include <stdio.h>
main() {
    void display(int a[5]);
    int a[5], i;
    clrscr();
    printf("nhap 5 phan tu");
    for (i=0; i<5; i++)
        scanf("%d", &a[i]);
    display(a); // Truyền toàn bộ mảng 'a' dùng tên mảng
    getch();
}
void display(int a[5]) { // Nhận toàn bộ mảng
    int i;
    printf("cac phan tu cua mang la");
    for (i=0; i<5; i++)
        printf("%d ", a[i]);
}

Kết quả

Khi code trên được biên dịch và thực thi, kết quả như sau:

Nhap 5 phan tu 10 20 30 40 50
Cac phan tu cua mang la 10 20 30 40 50

Ví dụ 2

Chương trình C sau in các phần tử theo thứ tự ngược từ mảng:

#include <stdio.h>
void main() {
    // Khai báo mảng - khởi tạo lúc chạy //
    int array[5], i;
    void rev(int array[5]);
    // Đọc phần tử vào mảng //
    printf("Nhap cac phan tu vao mang: \n");
    // Vòng lặp for //
    for (i=0; i<5; i++) {
        // Đọc đầu vào người dùng //
        printf("array[%d] :", i);
        scanf("%d", &array[i]);
    }
    // Hiển thị thứ tự ngược của các phần tử trong mảng //
    printf("Cac phan tu tu mang hien thi theo thu tu nguoc la: \n");
    rev(array); // Truyền toàn bộ mảng 'a' dùng tên mảng
    getch();
}
void rev(int array[5]) { // nhận toàn bộ mảng
    int i;
    for (i=4; i>=0; i--) {
        // Hiển thị đầu ra //
        printf("array[%d] :", i);
        printf("%d\n", array[i]);
    }
}

Kết quả

Khi chương trình trên được biên dịch và thực thi, kết quả như sau:

Nhap cac phan tu vao mang: array[0] :23 array[1] :34 array[2] :12 array[3] :56 array[4] :12
Cac phan tu tu mang hien thi theo thu tu nguoc la:
array[4] :12 array[3] :56 array[2] :12 array[1] :34 array[0] :23