Vấn đề không sử dụng tham chiếu

 #include <iostream>
int main(){
int count = 2;
int sochan = count;
sochan = 3;
std::cout<< count;
return 0;
}

theo em có nghiên cứu thì muốn in ra giá trị 3 thì phải truyền tham chiếu mà em vẫn chưa hiểu lắm tại sao đoạn code này lại không ra giá trị là 3

sochancount là hai biến khác nhau.
Nếu ý bạn là int& sochan = count thì sochan là alias của count :smiley:

2 Likes

đúng là 2 biến khác nhau mà em cũng đã gán cho sochan và count nó bằng nhau rồi :face_with_raised_eyebrow::face_with_raised_eyebrow:

Tại sao đoạn code này lại không ra giá trị là 3

#include <iostream>
int main(){
    int count = 2;
    int sochan = count;
    sochan = 3;
    std::cout<< count;
    return 0;
}
  • Biến sochancount được lưu tại 2 vùng nhớ khác nhau trên máy tính
  • Lệnh sochan = count sẽ thực hiện việc copy giá trị của vùng nhớ biến count đưa vào vùng nhớ biến sochan

=> Vì vậy biến count không bị thay đổi giá trị khi biến sochan thay đổi

Sử dụng tham chiếu để in ra giá trị 3

#include <iostream>
int main(){
    int count = 2;
    int &sochan = count; // Khai biến tham chiếu
    sochan = 3;
    std::cout<< count;
    return 0;
}

int &sochan = count; lệnh này tạo ra biến sochan là biến tham chiếu đến vùng nhớ của biến count, hai biến được lưu tại 1 vùng nhớ giống nhau.

=> Vì vậy biến count bị thay đổi giá trị khi biến sochan thay đổi

2 Likes

cảm ơn bạn đã giúp mình thông não !!! :heart_eyes::heart_eyes::heart_eyes:

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