Menu
CoddyTech

Tham chiếu làm tham số

Bài học 9 trên 14 trong khóa học Con trỏ trong C++ của Coddy.

Bây giờ, bạn có thể thấy cách dùng tham chiếu làm đối số khi gọi hàm giúp công việc dễ dàng hơn. 

Nếu quay lại bài học về cách truyền con trỏ làm tham số, bạn sẽ nhớ mình đã nói rằng khi truyền giá trị vào hàm, các giá trị mà ta thao tác bên trong hàm là bản sao của những giá trị ban đầu đã truyền vào. 

Ta đã dùng con trỏ để giải quyết vấn đề này, nhưng thay vì dùng địa chỉ, giải tham chiếu, con trỏ, v.v., ta chỉ cần đánh dấu các tham số nhận vào là tham chiếu và thực hiện công việc như bình thường với các giá trị thông thường.

// Thay vì viết như thế này
void swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
    cout << *x << " " << *y << endl;
}

// Ta có thể viết như thế này
void swap(int &x, int &y) {
    int temp = x;
    x = y;
    y = temp;
    cout << x << " " << y << endl;
}

Bây giờ, nếu gọi hàm swap(), giá trị của hai số nguyên bạn truyền vào sẽ thay đổi vĩnh viễn. Vì vậy, thay vì lấy địa chỉ bộ nhớ của các giá trị rồi thay đổi giá trị tại những địa chỉ đó bằng cách giải tham chiếu, ta chỉ cần lấy tham chiếu đến chính các giá trị đó làm đối số và thao tác trực tiếp trên chúng. Vì chúng tham chiếu đến các giá trị ban đầu nên mọi thay đổi đều là vĩnh viễn.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

challenge icon

Thử thách

Dễ

Hoàn thiện hàm Calculator  từ hai bài học trước, nhưng thay vì dùng con trỏ, hãy dùng tham chiếu đến các giá trị của biến large và small. Trong hàm, hãy trừ large đi hiệu của large và small, rồi cộng small với chính nó.

Đầu vào
5 3

Đầu ra
5 3
3 6

Giải thích
Lấy 5 trừ đi hiệu của 5 và 3, tức là 2, ta được 5 - 2 = 3, còn cộng 3 với 3 ta được 6

Lưu ý: KHÔNG viết hàm main()

Tự làm thử

#include <iostream>

using namespace std;

void Calculator(// Nhận các đối số large và small dưới dạng tham chiếu) {
    // Viết code để thực hiện các phép tính
}


// KHÔNG viết hàm (function) main()

Tất cả bài học trong Con trỏ trong C++

Tự luyện tập: Trình biên dịch C++ online