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 )

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

3 Likes

Đã là “địa chỉ” mà còn “giống nhau” thì… :scream:
Đị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 :laughing:

1 Like

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

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

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

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

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

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