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 )

*grab popcorn* viết 10:27 ngày 01/10/2018

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à :>

Phan Bá Hải viết 10:25 ngày 01/10/2018

Đã 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

Jacger_Quang viết 10:31 ngày 01/10/2018

Câu trả lời hay nhất trong ngày

Jacger_Quang viết 10:24 ngày 01/10/2018

Ok mình hiểu rồi, cảm ơn nhé

rogp10 viết 10:24 ngày 01/10/2018

Ngay từ đầu ab đã là hai ô nhớ khác nhau rồi

Nguyễn Duy Hùng viết 10:18 ngày 01/10/2018

khi 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 ).

Jacger_Quang viết 10:30 ngày 01/10/2018

Ý 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ế

Bài liên quan
0