Sử dụng new để cấp phát bộ nhớ

mình sử dụng hàm new để cấp phát bộ nhớ cho con trỏ kiểu như sau:

int *a,c;
c=10;
a = new int( c );

và lấy một con trỏ mới để trỏ tới địa chỉ của biến c.

int *d;
d=&c;

sau đó mình in ra 2 địa chỉ của con trỏ a và con trỏ d thì thấy 2 địa chỉ này không giống nhau mà giá trị lưu trong địa chỉ này lại giống nhau.
Mình hiểu sai ở đâu ạ.
có phải hàm new int( c ) chỉ có tác dụng cấp phát bộ nhớ dạng int cho con trỏ a chứ không phải cấp phát cho con trỏ a địa chỉ của c.
Mong được mọi người giải đáp ạ.

Ở đây có 3 khái niệm ko đc nhầm lẫn:

  • Giá trị của *a
  • Địa chỉ a trỏ đến (hay nói cách khác nó là giá trị của con trỏ a :smiley: )
  • Địa chỉ của con trỏ a &a
3 Likes

vậy hàm new int ( c ) có mối tương quan gì với c không ạ.
tại mình thấy khi mình cho a = new int ( c ) // cấp phát cho a một giá trị.
sau đó mình cho con trỏ d = &c // là cho con trỏ c trỏ tới địa chỉ của c.
Nhưng mình cứ nghĩ 2 con trỏ a với d trỏ tới một địa chỉ nhưng khi mình in ra kết quả lại khác nhau. Nhưng khi xuất giá trị chứa tại các địa chỉ đó thì đúng là giá trị của c ạ.

Không, nó chỉ lấy giá trị của c để khởi tạo thôi.

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