Tôi gặp sự cố với tham chiếu. xem xét mã này:Tham chiếu dưới dạng đối số chức năng?
void pseudo_increase(int a){a++;}
int main(){
int a = 0;
//..
pseudo_increase(a);
//..
}
Ở đây, giá trị của biến a
sẽ không tăng như một bản sao hoặc bản sao của nó được thông qua và không biến bản thân.
Bây giờ chúng ta hãy xem xét một ví dụ khác:
void true_increase(int& a){a++;}
int main(){
int a = 0;
//..
true_increase(a);
//..
}
Ở đây người ta nói giá trị của a
sẽ tăng - nhưng tại sao?
Khi gọi true_increase(a)
, bản sao a
sẽ được chuyển. Nó sẽ là một biến khác. Do đó, &a
sẽ khác với địa chỉ thực của a
. Vậy giá trị của a
tăng lên như thế nào?
Sửa lỗi cho tôi khi tôi sai.
Có lẽ bạn nên sử dụng các số nhận dạng khác nhau cho đối số chức năng và biến được chuyển đến nó để bạn không tự nhầm lẫn hơn nữa. – AusCBloke
Đi qua tham chiếu không tạo bản sao. Đó là một tham chiếu đến cùng một biến. – jweyrich
Tôi khuyên bạn nên tìm hiểu về con trỏ đầu tiên sau đó về cách tham chiếu có thể làm giảm nỗi đau của các đối tượng chưa được khởi tạo và các con trỏ không hợp lệ. Chọn bất kỳ cuốn sách C/C++ yêu thích nào của bạn! – sarat