30/09/2018, 17:40

Tại sao khi dùng `int *a` truyền vào hàm, khi thay đổi địa chỉ truyền vào `a` thi nó không thay đổi ở hàm main nếu không co return?

Việc là khi em dùng int*a truyền vào hàm, khi thay đổi địa chỉ truyền vào a thi nó không thay đổi ở hàm main nếu không co return. tại sao ? và khi em dùng *int & thì lại được. vậy phải tham chiếu cho con trỏ hả mọi người.

Nguyễn Việt Nhật viết 19:43 ngày 30/09/2018

biến con trỏ thực ra cũng chỉ là một biến.

thế nên int* a truyền vào hàm thì C++ sẽ tạo ra một bản sao là một con trỏ - cùng trỏ đến ô nhớ mà a đang trỏ, còn int* &a thì không tạo bản sao. Giống như int a và int &a vậy.

Khi bạn có nhu cầu thay đổi giá trị của biến con trỏ (ví dụ như cấp phát bộ nhớ) thì dùng tham chiếu cho biến con trỏ.

Man Ray viết 19:43 ngày 30/09/2018

àh…cám ơn anh nhiều

Bài liên quan
0