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