LATEST

Cách truyền mảng vào hàm trong C / C++

Trong bài viết này, codehow sẽ hướng dẫn các bạn cách truyền mảng vào hàm trong C / C++. Như các bạn đã biết thì một hàm có thể được truyền vào các tham số là các biến.

Tuy nhiên, chúng ta cũng có thể truyền một mảng vào trong một hàm. Vậy làm thế nào để có thể truyền được mảng vào hàm trong C / C++ thì hãy bắt đầu ngay cùng mình thôi nhé!!!

Cách truyền mảng vào hàm trong C / C++

Trong ngôn ngữ C và C++ không cho phép chúng ta truyền một mảng vào hàm như là một tham số của hàm. Vậy làm sao có thể truyền mảng vào hàm được.

Câu trả lời đó là chúng ta có thể truyền vào một con trỏ trỏ tới địa chỉ của một mảng. Như vậy thật ra chúng ta đang truyền địa chỉ của mảng chứ không phải truyền toàn bộ dữ liệu của mảng vào hàm.

Hãy cùng xem cú pháp của nó để hiểu rõ hơn nhé.

Cú pháp 1: Khai báo tham số hình thức của hàm là một con trỏ.

KieuDuLieu TenHam(KieuDuLieu *TenMang) {
   .
   .
}

Cú pháp 2: Khai báo tham số hình thức của hàm là một mảng có kích thước cụ thể.

KieuDuLieu TenHam(KieuDuLieu TenMang[KichThuoc]) {
   .
   .
}

Cú pháp 3: Khai báo tham số hình thức của hàm là một mảng không có kích thước.

KieuDuLieu TenHam(KieuDuLieu TenMang[]) {
   .
   .
}

Như vậy tùy thuộc vào chương trình mà chúng ta chọn cách truyền mảng vào hàm bằng cách nào, hãy cùng xem một số ví dụ dưới đây để hiểu hơn nhé.

Ví dụ truyền mảng vào hàm trong C / C++

Trong phần này mình sẽ thực hiện một số ví dụ sử dụng hàm có tham số truyền vào là một mảng. Mỗi ví dụ sẽ được viết bằng hai ngôn ngữ khác nhau là C và C++ để các bạn có thể so sánh và lựa chọn nhé.

Ví dụ 1: Viết chương trình yêu cầu người dùng nhập vào số lượng và giá trị cho các phần tử trong mảng. Sau đó viết hàm hiển thị các phần tử để in ra màn hình.

Chương trình C:

#include <stdio.h>

void HienThi(int arr[], int n)  {  
    printf("Các phần tử của mảng: \n");  
    for (int i = 0; i < n; i++)  {  
        printf("   arr[%d] = %d\n",i,arr[i]);    
    }  
} 

int main(void) {
  int n;
    do{
      printf("Nhập vào số lượng phần tử của mảng: ");
      scanf("%d", &n);
      if(n <= 0) printf("Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n");
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         printf("Nhập vào phần tử a[%d]: ",i);
         scanf("%d",&a[i]);
    }

    HienThi(a, n);

    printf("\n----------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
    return 0;
}

Chương trình C++:

#include<iostream>
using namespace std;

void HienThi(int arr[], int n)  {  
    cout << "Cac phan tu cua mang: " << endl;  
    for (int i = 0; i < n; i++)  {  
        cout << "   arr[" << i << "] = " << arr[i] << endl;    
    }  
} 

int main()
{
    int n;
    do{
      cout << "Nhập vào số lượng phần tử của mảng: ";
      cin >> n;
      if(n <= 0) cout<<"Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n";
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         cout << "Nhập vào phần tử a[" << i << "]: ";
         cin >> a[i];
    }

    HienThi(a, n);

    cout<<"\n----------------------------\n";
    cout<<"Chương trình này được đăng tại codehow.net";
    return 0;
}

Kết quả:

bai27 02 png

Ví dụ 2: Viết chương trình hiển thị số nhỏ nhất và số lớn nhất trong mảng. Số lượng và giá trị của các phần tử được nhập bởi người dùng.

Chương trình C:

#include <stdio.h>

void HienThi(int arr[], int n)  {  
    printf("Các phần tử của mảng: \n");  
    for (int i = 0; i < n; i++)  {  
        printf("   arr[%d] = %d\n",i,arr[i]);    
    }  
} 


void TimPTNhoNhat(int arr[], int n)  {  
    int min = arr[0];    
    for (int i = 0; i < n; i++)  {    
        if (min > arr[i])  {    
            min = arr[i];    
        }    
    }    
    printf("Phần tử nhỏ nhất là: %d\n",min);    
}  

void TimPTLonNhat(int arr[], int n)  {  
    int max = arr[0];    
    for (int i = 0; i < n; i++) {    
        if (max < arr[i])  {    
            max = arr[i];    
        }    
    }    
    printf("Phần tử lớn nhất là: %d\n",max);   
}

int main(void) {
  int n;
    do{
      printf("Nhập vào số lượng phần tử của mảng: ");
      scanf("%d", &n);
      if(n <= 0) printf("Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n");
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         printf("Nhập vào phần tử a[%d]: ",i);
         scanf("%d",&a[i]);
    }

    HienThi(a, n);
    printf("\n");
    TimPTNhoNhat(a, n);
    TimPTLonNhat(a, n);
    printf("\n----------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
    return 0;
}

Chương trình C++

#include<iostream>
using namespace std;

void HienThi(int arr[], int n)  {  
    cout << "Các phần tử trong mảng: " << endl;  
    for (int i = 0; i < n; i++)  {  
        cout << "   arr[" << i << "] = " << arr[i] << endl;    
    }  
} 

void TimPTNhoNhat(int arr[], int n)  {  
    int min = arr[0];    
    for (int i = 0; i < n; i++)  {    
        if (min > arr[i])  {    
            min = arr[i];    
        }    
    }    
    cout << "Phần tử nhỏ nhất là: " << min << endl;    
}  
 
void TimPTLonNhat(int arr[], int n)  {  
    int max = arr[0];    
    for (int i = 0; i < n; i++) {    
        if (max < arr[i])  {    
            max = arr[i];    
        }    
    }    
    cout << "Phần tử lớn nhất là: " << max << endl;    
}

int main()
{
    int n;
    do{
      cout << "Nhập vào số lượng phần tử của mảng: ";
      cin >> n;
      if(n <= 0) cout<<"Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n";
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         cout << "Nhập vào phần tử a[" << i << "]: ";
         cin >> a[i];
    }

    HienThi(a, n);
    cout << endl;
   TimPTNhoNhat(a, n);
   TimPTLonNhat(a, n);

    cout<<"\n----------------------------\n";
    cout<<"Chương trình này được đăng tại codehow.net";
    return 0;
}

Kết quả:

bai27 03 png

Ví dụ 3: Viết chương trình tính giá trị trung bình của các phần tử trong mảng.

Chương trình C:

#include <stdio.h>

void TinhGiaTriTB(int arr[], int kichco) {
   int i, tong = 0;       
   double trungbinh;          
   for (i = 0; i < kichco; i++) {
      tong += arr[i];
   }
   trungbinh = (double)tong / kichco;
   printf("Giá trị trung bình của các phần tử trong mảng là: %0.2f", trungbinh);
}

int main(void) {
  int n;
    do{
      printf("Nhập vào số lượng phần tử của mảng: ");
      scanf("%d", &n);
      if(n <= 0) printf("Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n");
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         printf("Nhập vào phần tử a[%d]: ",i);
         scanf("%d",&a[i]);
    }

    TinhGiaTriTB(a, n);
    printf("\n----------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
    return 0;
}

Chương trình C++:

#include<iostream>
using namespace std;

void TinhGiaTriTB(int arr[], int kichco) {
   int i, tong = 0;       
   double trungbinh;          
   for (i = 0; i < kichco; i++) {
      tong += arr[i];
   }
   trungbinh = (double)tong / kichco;
   cout<<"Giá trị trung bình của các phần tử trong mảng là: "<<trungbinh;
}

int main()
{
    int n;
    do{
      cout << "Nhập vào số lượng phần tử của mảng: ";
      cin >> n;
      if(n <= 0) cout<<"Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n";
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         cout << "Nhập vào phần tử a[" << i << "]: ";
         cin >> a[i];
    }

    TinhGiaTriTB(a, n);

    cout<<"\n----------------------------\n";
    cout<<"Chương trình này được đăng tại codehow.net";
    return 0;
}

Kết quả:

bai27 04 png

Lời kết

Như vậy là chúng ta đã cùng nhau tìm hiểu về cách truyền mảng vào hàm trong C / C++. Ở bài tiếp theo mình sẽ giới thiệu đến các bạn con trỏ trong C / C++, hãy chú ý theo dõi nhé !!!

Cùng chuyên mục:

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán tính lũy thừa trong C / C++

Thuật toán tính lũy thừa trong C / C++

Top