01/10/2018, 08:15
Pointer va Dia chi
Mình có 1 dòng code sau:
int a = 9, b;
int *ptr = 0;
ptr = &a;
b = *ptr;
cout << "Adress Of a is : " << ptr <<endl;
cout << "Var of a is : " << *ptr << endl;
cout << "Adress of b is: "<< &b << endl;
cout << "Var of b is: "<< b << endl;
Nếu in ra thì nó vẫn ra đúng giá trị: a = b =9
Nhưng địa chỉ thì lại khác nhau.
Vấn đề là mình chưa hiểu vì sao biến a & b có cùng giá trị nhưng khác địa chỉ.
(Address a: 0030FBDC
Address b: 0030FBD0 )
Bài liên quan
2 thằng 2 tài khoản ngân hàng khác nhau. Nhưng có số tiền trong tk giống nhau vẫn được mà :>
Đã là “địa chỉ” mà còn “giống nhau” thì…
Địa chỉ trong bộ nhớ RAM giống như địa chỉ nhà hay số tài khoản ngân hàng. Nhà A có 3 người, nhà B có 3 người, nhưng địa chỉ nhà là khác nhau. Giống nhau thì chắc cạn lời rồi
Câu trả lời hay nhất trong ngày
Ok mình hiểu rồi, cảm ơn nhé
Ngay từ đầu
a
vàb
đã là hai ô nhớ khác nhau rồikhi bạn khai báo int a, b thì 2 thằng nó nắm 2 địa chỉ khác nhau. khi bạn khai báo một con trỏ int* ptr = 0 tức là nó đang trỏ tới null ( không trỏ đi đâu hết ). ptr = &a nó trỏ tới địa chỉ của a (toán tử & là toán tử lấy địa chỉ và toán tử * là lấy giá trị ra từ địa chỉ đó ) vì thế khi b = *ptr tức là b có giá trị bằng với a ( 9 ).
Ý bạn là b = giá trị của *ptr (b = *ptr = 9 ) chứ ko lấy địa chỉ của nó (003466xyz…) phải ko? Lúc đầu mình cũng nghĩ như thế