17/11/2018, 21:44

Truyền con trỏ tới hàm trong C++

Học lập trình C++ Ngôn ngữ lập trình C++ cho phép bạn truyền một con trỏ tới một hàm. Để truyền con trỏ tới hàm trong C++ bạn chỉ cần khai báo tham số hàm có kiểu con trỏ. Ví dụ sau chúng ta truyền một con trỏ unsigned long tới một hàm và thay đổi giá trị của nó bên trong hàm, ...

Học lập trình C++

Ngôn ngữ lập trình C++ cho phép bạn truyền một con trỏ tới một hàm. Để truyền con trỏ tới hàm trong C++ bạn chỉ cần khai báo tham số hàm có kiểu con trỏ.

Ví dụ sau chúng ta truyền một con trỏ unsigned long tới một hàm và thay đổi giá trị của nó bên trong hàm, truyền tham chiếu khi gọi hàm:

#include <iostream>
#include <ctime>
 
using namespace std;
void laySoGiay(unsigned long *par);

int main() {
    unsigned long seconds;

    laySoGiay(&seconds);

    // in gia tri
    cout << "So giay la: " << seconds << endl;

    return 0;
}

void laySoGiay(unsigned long *par) {
    // Lay so giay hien tai
    *par = time( NULL );
    return;
}

Kết quả:

So giay la: 1542429527

Với hàm có tham số là một con trỏ, thì bạn cũng có thể truyền một mảng vào, ví dụ:

#include <iostream>
using namespace std;
 
// khai bao prototype ham:
double giaTriTB(int *arr, int size);
 
int main() {
    // khai bao mang so nguyen arr co 5 phan tu.
    int arr[5] = {10, 20, 100, 30, 60};
    double trungbinh;
 
    // truyen con tro toi mang duoi dang mot tham so.
    trungbinh = giaTriTB(arr, 5);
 
    // hien thi ket qua 
    cout << "Gia tri trung binh la: " << trungbinh << endl; 
    
    return 0;
}

double giaTriTB(int *arr, int size) {
    int    i, sum = 0;       
    double trungbinh;          
  
    for (i = 0; i < size; ++i) {
        sum += arr[i];
    }
 
    trungbinh = double(sum) / size;
 
    return trungbinh;
}

Kết quả:

Gia tri trung binh la: 44
Học lập trình C++
0