30/09/2018, 16:04

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

Nguyễn Minh Dũng viết 18:08 ngày 30/09/2018

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ì.

Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây : Thông tin về khóa học xem tại đây : -Sự khác biệt giữa 2 khóa học cũ và mới : +Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả. +Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại..... Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học …
buithaiminh viết 18:17 ngày 30/09/2018

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

Đỗ Mạnh Hà viết 18:07 ngày 30/09/2018

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.

Minh Anh viết 18:10 ngày 30/09/2018

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

Bài liên quan
0