01/10/2018, 14:44
Pointer in C. Dynamic Array
Mình đang học con trỏ trong c, tới phần nhập xuất mảng dùng con trỏ.
Mình thấy khi mình truyền con trỏ vào hàm Nhap(int *arr, int lengh)
rồi cấp phát trong hàm này thì kết quả in ra không giống với khi mình nhập vào.
Còn khi mình cấp phát ở bên ngoài hàm Nhap()
thì kết quả in ra là đúng.
Các bạn giải thích dùm mình chuyện khác nhau khi cấp phát trong hàm và ngoài hàm với. thanks !
Bài liên quan
Bạn đã học tham biến và tham trị chưa?
bạn cứ nói đi, mình học rồi. kiểu lâu k dùng C nên quay lại hơi quên chút ^^!
(arr + i)
=&a[i]
.c làm gì có tham trị nhỉ, c++ mới có chứ
C k có tham chiếu thôi bác
thì scanf nó cần &a[i] mà. bác nói vậy ý j ?
Cách đơn giản nhất là bạn hãy return cái mảng bạn cấp phát trong hàm nhập. Hoặc Nếu là C/C++ thì dùng thêm tham chiếu nghĩa là tham số phải là int& *arr, nếu là C thì dùng con trỏ cấp 2. Con trỏ bản chất là địa chỉ của 1 biến, khi bạn truyền *arr, bạn đang truyền địa chỉ của biến, như vậy 1 bản sao sẽ đc tạo lập theo nguyên tắc truyền tham trị, khi ra khỏi hàm, địa chỉ này ko thay đổi. Dùng con trỏ cấp 2 thì hơi khó nhìn nên C++ có truyền thêm dấu &, dễ nhìn hơn.
Mình đang trả lời bạn phía trên thôi bác ơi