Hỏi về dấu & trong C

Các anh cho em hỏi trong hàm của C. lúc ghi danh sách đối số ghi nào thêm lênh &
ví dụ int pro(int a) và int pro(int &a) nó khác nhau thế nào? Và cách sử dụng của nó.
E đọc giáo trình nhưng k phân biệt lúc sử dụng 2 lệnh trên

3 Likes

Hi Nhật Thành, trong C không có khái niệm này. Có lẽ em hiểu nhầm sang C++. Trong C++ cái này gọi là reference.

Em xem bài này của anh để hiểu reference là gì.

6 Likes

Nó là tham chiếu (reference). Có & thì nếu biến thay đổi bên trong hàm, ra ngoài biến mang giá trị mới. Không có & thì biến có thay đổi hay không thay đổi, ra ngoài biến vẫn mang giá trị cũ.

À quên, mà đây là C++ nhé @webhnt

4 Likes

Một cách dễ hiểu mình sẽ đưa ra ví dụ cho bạn.

#include <iostream>
using namespace std;

// Truyền tham trị
void increment(int a) {
    a++;
    cout << a << endl;
}

// Truyền tham chiếu
void incrementR(int &a) {
    a++;
    cout << a << endl;
}

int main() {

    int x = 10;

    increment(x);          // Output: 11
    cout << x << endl;     // Output: 10

    incrementR(x);          // Output: 11
    cout << x << endl;      // Output: 11

    return 0;
}

Như bên trên thì hàm mà ta không có toán tử & ở trong tham số của nó thì mặc định sẽ là truyền giá trị của đối số vào hàm đó và dĩ nhiên giá trị gốc của biến x sẽ không bị thay đổi. Còn nếu ta dùng phép tham chiếu tới biến đó thì khi ta thao tác bên trong hàm với đối số truyền vào giá trị của biến gốc được truyền vào sẽ bị thay đổi.

8 Likes

dạ em cảm ơn các anh

1 Like

Thanks everyone, dễ hiểu quá

dễ hiểu lắm ạ, cảm ơn anh rất nhiều

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?